Small fixes.

This commit is contained in:
Philippe Pittoli 2025-04-20 11:54:06 +02:00
parent d113026d40
commit 7cf7104757
2 changed files with 15 additions and 14 deletions

View file

@ -30,4 +30,4 @@ subtexth = 0.2
"files and" "directories" at 1/2 between FS.e and FS.w + (0, h) "files and" "directories" at 1/2 between FS.e and FS.w + (0, h)
"logical blocks" "ex: 0x10" at 1/2 between DRI.e and DRI.w + (0, h) "logical blocks" "ex: 0x10" at 1/2 between DRI.e and DRI.w + (0, h)
"physical blocks, AHCI commands" "ex: READ 0x2058 (LBA)" at 1/2 between DEV.e and DEV.w + (0, h) "physical blocks, AHCI commands" "ex: READ 0x2058" at 1/2 between DEV.e and DEV.w + (0, h)

View file

@ -70,7 +70,7 @@ An experiment is described and analyzed to understand the performance that can b
.br .br
.po +11.5c .po +11.5c
.nf .nf
Document sync'ed with DODB \*[VERSION] Document synched with DODB \*[VERSION]
.fi .fi
.br .br
.po .po
@ -154,10 +154,10 @@ other database designs were created\*[*].
.FOOTNOTE1 .FOOTNOTE1
A lot of designs won't be mentioned here. A lot of designs won't be mentioned here.
The actual history of databases is often quite unclear since the categories of databases are sometimes vague, underspecified. The actual history of databases is often quite unclear since the categories of databases are sometimes vague, underspecified.
As mentioned, SQL is not a silver bullet and a lot of developers shifted towards other solutions, that's the important part. As mentioned, SQL is not a silver bullet and a lot of developers have turned to other solutions, that's the important part.
.FOOTNOTE2 .FOOTNOTE2
The NoSQL movement started because the stated goals of many actors from the early Web boom were different from SQL. The NoSQL movement started because the stated goals of many actors from the early Web boom were different from SQL.
The need for very fast operations far exceeded what was practical at the moment with SQL. The need for very fast operations far exceeded what was practical at the time with SQL.
This led to the use of more basic methods to manage data such as This led to the use of more basic methods to manage data such as
.I "key-value stores" , .I "key-value stores" ,
which simply associate a value with an which simply associate a value with an
@ -168,7 +168,7 @@ In this case, there is no need for the database to have
data may be untyped, the entries may even have different attributes. data may be untyped, the entries may even have different attributes.
Since homogeneity is not necessary anymore, databases have fewer (or different) constraints. Since homogeneity is not necessary anymore, databases have fewer (or different) constraints.
Document-oriented databases are a sub-class of key-value stores, where metadata can be extracted from the entries for further optimizations. Document-oriented databases are a sub-class of key-value stores, where metadata can be extracted from the entries for further optimizations.
And that's exactly what is being done in Document Oriented DataBase (DODB). And as the name suggests, that's exactly what is being done in DODB (Document Oriented DataBase).
.CITATION1 .CITATION1
The stated goal of DODB is to provide a The stated goal of DODB is to provide a
@ -186,18 +186,18 @@ Or as people might call it:
.KS .KS
.BULLET .BULLET
.B "DODB is simple" : .B "DODB is simple" :
each database entry is written in a plain file, serialized in JSON. each database entry is serialized then written in a plain file.
DODB is implemented in only a thousand lines of code in total, despite including optional features and optimized alternative implementations to make the library efficient and cover most cases. DODB is implemented in only a thousand lines of code in total, despite including optional features and optimized alternative implementations to make the library efficient and cover most cases.
.KE .KE
DODB doesn't strive to be minimalistic but avoids intermediary language and low-level optimizations. DODB doesn't strive to be minimalistic but avoids intermediary language and doesn't need low-level optimizations.
Storing data is writing a file, indexing data is making symbolic links. Storing data is writing a file, indexing data is making symbolic links.
It is that simple. It is that simple.
.KS .KS
.BULLET .BULLET
.B "DODB is easy-to-use" : .B "DODB is easy-to-use" :
the API is high-level and doesn't take any superflous parameter. the API is high-level and doesn't take any superfluous parameter.
Creating a database only requires a path, updating an entry only requires the new version of the entry, and so on. Creating a database only requires a path, updating an entry only requires the new version of the entry, and so on.
Everything is designed to be enjoyable for the developers. Everything is designed to be enjoyable for the developers.
.KE .KE
@ -205,7 +205,7 @@ Everything is designed to be enjoyable for the developers.
In its current form and on commodity hardware, DODB aims for projects with up to a few hundred million entries\*[*] and a few hundred thousand requests per second. In its current form and on commodity hardware, DODB aims for projects with up to a few hundred million entries\*[*] and a few hundred thousand requests per second.
.FOOTNOTE1 .FOOTNOTE1
There is no real hard limits but the underlying filesystem, DODB can accept billions of entries. There are no real hard limits but the underlying filesystem, DODB can accept billions of entries.
.br .br
See the section See the section
.dq "Limits of DODB" . .dq "Limits of DODB" .
@ -215,21 +215,21 @@ DODB may be a great starting point to implement more sophisticated features for
.UL "Contrary to SQL" , .UL "Contrary to SQL" ,
DODB has a very narrow scope: to provide a library enabling to store, to retrieve, to modify and to delete data. DODB has a very narrow scope: to provide a library enabling to store, to retrieve, to modify and to delete data.
In this way, DODB transforms any application in a database manager. In this way, DODB turns any application into a database manager.
DODB doesn't provide an interactive shell, there is no request language to perform arbitrary operations on the database, no statistical optimizations of the requests based on query frequencies, etc. DODB doesn't provide an interactive shell, there is no request language to perform arbitrary operations on the database, no statistical optimizations of the requests based on query frequencies, etc.
Instead, DODB reduces the complexity of the infrastructure, stores data in plain files and enables simple manual scripting with widespread unix tools. Instead, DODB reduces the complexity of the infrastructure, stores data in plain files and enables simple manual scripting with widespread unix tools.
Simplicity is key. Simplicity is key.
Traditional SQL databases have a snowballing effect on code complexity even for applications with basic requirements. Traditional SQL databases have a snowball effect on code complexity even for applications with basic requirements.
Data description in tables and relations is not intuitive and requires to adapt the application to the database. Data description in tables and relations is not intuitive and requires to adapt the application to the database.
DODB stores whole documents instead, which simply means to serialize data structures already used in the application. DODB stores whole documents instead, which essentially means serializing data structures already used in the application.
.UL "Contrary to other NoSQL databases" , .UL "Contrary to other NoSQL databases" ,
DODB isn't an application but a library. DODB isn't an application but a library.
Developers store their data themselves without depending on Developers store their data themselves without depending on
. I yet-another-all-in-one . I yet-another-all-in-one
massive tool. massive tool.
The library writes (and removes) data on a storage device, has a few retrieval and update mechanisms and that's it\*[*]. The library writes (and deletes) data to a storage device, has a few retrieval and update mechanisms and that's it\*[*].
.FOOTNOTE1 .FOOTNOTE1
The lack of features The lack of features
.I is .I is
@ -1216,7 +1216,8 @@ Finally, the driver sends AHCI commands to request the devices.
.QE .QE
.FOOTNOTE1 .FOOTNOTE1
Working only with blocks (from 0 to x) is called Working only with blocks (from 0 to x) is called
.dq "Logical block addressing" . .dq "Logical Block Addressing"
(LBA).
Before that, other schemes were used such as Before that, other schemes were used such as
.I cylinder-head-sector .I cylinder-head-sector
(CHS) but this is fairly obsolete, hard disks do not use this anymore. (CHS) but this is fairly obsolete, hard disks do not use this anymore.