Changes

Jump to navigation Jump to search
988 bytes added ,  10:17, 9 March 2023
m
Text replacement - "<br />" to "<br/>"
==Data Types==* {{Type|Num}}: compressed integer (1This article is part of the [[Advanced User's Guide]]. It presents some low-5 bytes)* {{Type|Token}}: length ({{Type|Num}}) and bytes of UTF8 byte representation* {{Type|Double}}: number, level details on how data is stored as token* {{Type|Boolean}}: boolean (1 byte, <code>00</code> or <code>01</code>)* {{Type|TokenSet}}: key array (<code>Tokens</code>), next/bucket/size arrays (<code>Nums</code>)* {{Type|Nums}}, {{Type|Tokens}} and {{Type|Doubles}} are arrays of values, and introduced with in the number of entries ({{Type|Num}})database files.
==inf.basex=Data Types=
'''ContentsThe following data types are used for specifying the storage layout:''' Meta information on a database and main memory indexes.
{| class="wikitable" width|- valign="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="100%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}})||} =Database Files= The following tables illustrate the layout of the BaseX database files. All files are suffixed with {{Code|.basex}}. ==Metadata, Name/Path/Doc Indexes: {{Code|inf}}== {| class="wikitable"|- valign="top"
! Description
! Format
! Method|-| valign='"top' "| '''1. Meta DataMetadata'''| valign='top' | 1. Key/value pairs, suffixed by empty key in no particular order ({{Type|Token}}/{{Type|Token}}):<br />&nbsp; &bull; <code>PERM</code> → User PermissionsExamples: {{Code|FNAME}}, {{Code| valign='top' TIME}}, {{Code| [https://githubSIZE}}, ..com/BaseXdb/basex/blob/master/src/main/java/org/basex/data/DiskData.java DiskData()]<br/>[https:&nbsp; &bull; {{Code|PERM}} → Number of users ({{Type|Num}}), and name/password/github.compermission values for each user ({{Type|Token}}/BaseXdb{{Type|Token}}/basex/blob/master/src/main/java/org/basex/data/MetaData.java MetaData({{Type|Num}})]<br/>[https://github2.com/BaseXdb/basex/blob/master/src/main/java/org/basex/core/Users.java Users()]Empty key as finalizer|-| valign='"top' "| '''2. Main memory indexes'''| 1. Key/value pairs, suffixed by empty key in no particular order ({{Type|Token}}/{{Type|Token}}):<br />&nbsp; &bull; <code>{{Code|TAGS</code> }} Tag Element Name Index<br />&nbsp; &bull; <code>{{Code|ATTS</code> }} → Attribute Name Index<br />&nbsp; &bull; <code>{{Code|PATH</code> }} → Path Index<br />&nbsp; &bull; <code>{{Code|NS</code> }} → Namespaces<br />&nbsp; &bull; <code>{{Code|DOCS</code> }} → Document Index| valign='top' | [https:<br//github>2.com/BaseXdb/basex/blob/master/src/main/java/org/basex/data/DiskData.java DiskData()]Empty key as finalizer|-| valign='"top' "| '''2.1. a) Name Index'''<br/>TagElement/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}})| - valign='"top' | [https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/index/Names.java Names()]<br/>[https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/util/hash/TokenSet.java TokenSet.read()]<br/>[https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/index/StatsKey.java StatsKey()]"|-| valign='top' | '''2.2. b) Path Index'''| 1. Flag for path definition ({{Type|Boolean}}, always <code>{{Code|true</code>}}; 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)| - valign='"top' | [https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/index/path/PathSummary.java PathSummary()]<br/>[https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/index/path/PathNode.java PathNode()]"|-| valign='top' | '''2.3. 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)
| - valign='"top' | [https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/data/Namespaces.java Namespaces()]<br/>[https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/data/NSNode.java NSNode()]|-"| valign='top' | '''2.4. d) Document Index'''
| Array of integers, representing the distances between all document pre values ({{Type|Nums}})
| valign='top' | [https://github.com/BaseXdb/basex/blob/master/src/main/java/org/basex/index/DocIndex.java DocIndex()]
|}
==(Node Table: {{Code|tbl}}, {{Code|tbli).basex}}== * {{Code|tbl}}: Main database table, stored in blocks.* {{Code|tbli}}: Database directory, organizing the database blocks.
'''Contents:''' Main database table and directorySome more information on the [[Node Storage|node storage]] is available.
==Texts: {{Code|txt.basex}}, {{Code|atv}}==
'''Contents* {{Code|txt}}:''' Heap file with for text values (document names, string values of texts, comments and processing instructions)* {{Code|atv}}: Heap file for attribute values.
==atv.basexValue Indexes: {{Code|txtl}}, {{Code|txtr}}, {{Code|atvl}}, {{Code|atvr}}==
'''ContentsText Index:''' * {{Code|txtl}}: Heap file with attribute valuesID lists.* {{Code|txtr}}: Index file with references to ID lists.The '''Attribute Index''' is contained in the files {{Code|atvl}} and {{Code|atvr}}, the '''Token Index''' in {{Code|tokl}} and {{Code|tokr}}. All have the same layout.
==(txtl|txtr)For a more detailed discussion and examples of these file formats please see [[Index File Structure]].basex==
'''Contents==Document Path Index:''' Value index for texts.{{Code|pth}}==
==(atvl|atvr)Provides an index of all the document paths in the database. For databases with a large number of paths this file can be quite large so it is only generated the first time a function requesting a path lookup is run. For databases where path lookups are never used this file will not exist.basex==
'''ContentsNote:''' Value index for attributesOn Windows/Mac systems this file is case insensitive (all paths are lower case). On UNIX-like systems this file is case sensitive. The behaviour of path look ups will vary between systems. Copying this file between system types may lead to unexpected behaviour.
==(ftxaID/Pre Mapping: {{Code|ftxb|ftxc).basexidp}}==
'''Contents:''' Trie full-text indexThis file is only created if incremental indexing (UPDINDEX) is enabled for a database. It is used to provide a quick look up of the pre value for a database node id.
==(Full-Text Fuzzy Index: {{Code|ftxx}}, {{Code|ftxy}}, {{Code|ftxz).basex}}==
'''Contents:''' Fuzzy full-text index...may soon be reimplemented.
Bureaucrats, editor, reviewer, Administrators
13,554

edits

Navigation menu