-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
vsql now supports storing objects (rows, tables, etc) larger than a page (which previously was a serious limitation). This happens entirely transparently on the B-tree implementation where larger objects are split (and reconstructed) to and from new `B` (blob) and `F` (fragment) objects. This is a breaking change to the file format. Some other notable improvements: - Documentation now has Excalidraw diagrams. The "File Format" page has been totally overhauled and is a lot easier to understand and much nicer to look at: https://vsql.readthedocs.io/en/latest/file-format.html - Added "Limitations" page. Among which, a vsql file - in theory - can hold up to 128PB (wholly untested, of course). - Page splitting now has a heavy bias towards filling the left page as much as possible (rather than even splitting). We prefer the left page to be a full as possible because the keys are sequential, so in the case of lots of sequential inserts it can pack the data more tightly and causes less page splits as new data is inserted. - Added another B-tree test for testing 100k sequential inserts/deletes and improved the existing random insert/remove test matrix from just 48 byte objects to also include 148 byte objects (one object per page) and 348 byte objects (always using blob storage). Fixes #43
- Loading branch information
1 parent
2c4c6f1
commit 7ee3bfd
Showing
27 changed files
with
11,326 additions
and
507 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2,860 changes: 2,860 additions & 0 deletions
2,860
docs/img/file-format-non-leaf-reference.excalidraw
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,4 +5,5 @@ Internals | |
:maxdepth: 1 | ||
|
||
file-format.rst | ||
limitations.rst | ||
mvcc.rst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Limitations | ||
=========== | ||
|
||
These have not been tested, but are based on fundamental design choices: | ||
|
||
.. list-table:: | ||
:header-rows: 1 | ||
|
||
* - Description | ||
- Limit | ||
|
||
* - The maximum page size (when creating a new file) | ||
- 65536 bytes (64 KB) | ||
|
||
* - The maximum number of pages in a file | ||
- 2147483647 (~2.1 billion) | ||
|
||
* - The maximum file size (using the default page size) | ||
- 8 PB | ||
|
||
* - The maximum file size (using the maximum page size) | ||
- 128 PB | ||
|
||
* - The maximum object size (using the default page size) | ||
- 8 TB | ||
|
||
* - The maximum object size (using the maximum page size) | ||
- 128 TB |
Oops, something went wrong.