Changes

Jump to navigation Jump to search
1,252 bytes removed ,  10:20, 21 July 2022
no edit summary
The following data types are used for specifying the storage layout:
{| class="wikitable" width|- valign="100%top"|-
! Type
! Description
! Example (native → hex integers)
|-valign="top"
| {{Type|Num}}
| Compressed integer (1-5 bytes), specified in [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/util/Num.java Num.java]
| {{Code|15}} → {{Code|0F}}; {{Code|511}} → {{Code|41 FF}}<br/>
|-valign="top"
| {{Type|Token}}
| Length ({{Type|Num}}) and bytes of UTF8 byte representation
| {{Code|Hello}} → {{Code|05 48 65 6c 6c 6f}}
|-valign="top"
| {{Type|Double}}
| Number, stored as token
| {{Code|123}} → {{Code|03 31 32 33}}
|-valign="top"
| {{Type|Boolean}}
| Boolean (1 byte, {{Code|00}} or {{Code|01}})
| {{Code|true}} → {{Code|01}}
|-valign="top"
| {{Type|Nums}}, {{Type|Tokens}}, {{Type|Doubles}}
| Arrays of values, introduced with the number of entries
| {{Code|1,2}} → {{Code|02 01 31 01 32}}
|-valign="top"
| {{Type|TokenSet}}
| Key array ({{Type|Tokens}}), next/bucket/size arrays (3x {{Type|Nums}})
==Meta Data, Name/Path/Doc Indexes: {{Code|inf}}==
{| class="wikitable" width|- valign="100%top"|-
! Description
! Format
! Method|-valign="top"
| '''1. Meta Data'''
| 1. Key/value pairs, in no particular order ({{Type|Token}}/{{Type|Token}}):<br/>&nbsp; &bull; Examples: {{Code|FNAME}}, {{Code|TIME}}, {{Code|SIZE}}, ...<br />&nbsp; &bull; {{Code|PERM}} → Number of users ({{Type|Num}}), and name/password/permission values for each user ({{Type|Token}}/{{Type|Token}}/{{Type|Num}})<br/>2. Empty key as finalizer
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/DiskData.java DiskData()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/MetaData.java MetaData()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/core/Users.java Users()]|-valign="top"
| '''2. Main memory indexes'''
| 1. Key/value pairs, in no particular order ({{Type|Token}}/{{Type|Token}}):<br />&nbsp; &bull; {{Code|TAGS}} → Element Name Index<br />&nbsp; &bull; {{Code|ATTS}} → Attribute Name Index<br />&nbsp; &bull; {{Code|PATH}} → Path Index<br />&nbsp; &bull; {{Code|NS}} → Namespaces<br />&nbsp; &bull; {{Code|DOCS}} → Document Index<br/>2. Empty key as finalizer
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/DiskData.java DiskData()]|-valign="top"
| '''2 a) Name Index'''<br/>Element/attribute names
| 1. Token set, storing all names ({{Type|TokenSet}})<br />2. One StatsKey instance per entry:<br/>2.1. Content kind ({{Type|Num}}):<br />2.1.1. Number: min/max ({{Type|Doubles}})<br />2.1.2. Category: number of entries ({{Type|Num}}), entries ({{Type|Tokens}})<br />2.2. Number of entries ({{Type|Num}})<br />2.3. Leaf flag ({{Type|Boolean}})<br />2.4. Maximum text length ({{Type|Double}}; legacy, could be {{Type|Num}})
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/index/Names.java Names()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/util/hash/TokenSet.java TokenSet.read()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/index/StatsKey.java StatsKey()]|-valign="top"
| '''2 b) Path Index'''
| 1. Flag for path definition ({{Type|Boolean}}, always {{Code|true}}; legacy)<br/>2. PathNode:<br/>2.1. Name reference ({{Type|Num}})<br/>2.2. Node kind ({{Type|Num}})<br/>2.3. Number of occurrences ({{Type|Num}})<br/>2.4. Number of children ({{Type|Num}})<br/>2.5. {{Type|Double}}; legacy, can be reused or discarded<br/>2.6. Recursive generation of child nodes (→ 2)
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/index/path/PathSummary.java PathSummary()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/index/path/PathNode.java PathNode()]|-valign="top"
| '''2 c) Namespaces'''
| 1. Token set, storing prefixes ({{Type|TokenSet}})<br/>2. Token set, storing URIs ({{Type|TokenSet}})<br/>3. NSNode:<br/>3.1. pre value ({{Type|Num}})<br/>3.2. References to prefix/URI pairs ({{Type|Nums}})<br/>3.3. Number of children ({{Type|Num}})<br/>3.4. Recursive generation of child nodes (→ 3)
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/Namespaces.java Namespaces()]<br/>[https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/NSNode.java NSNode()]|-valign="top"
| '''2 d) Document Index'''
| Array of integers, representing the distances between all document pre values ({{Type|Nums}})
| [https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/index/DocIndex.java DocIndex()]
|}
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu