Small fixes.
This commit is contained in:
parent
d113026d40
commit
7cf7104757
2 changed files with 15 additions and 14 deletions
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Add table
Reference in a new issue