Alternatives++.
This commit is contained in:
parent
bed189deba
commit
cdfaf3a006
1 changed files with 53 additions and 18 deletions
|
@ -1361,7 +1361,10 @@ Isolation : \*[OK] :T{
|
||||||
technique\*[*]
|
technique\*[*]
|
||||||
T}
|
T}
|
||||||
Durability : \*[OK] :\*[OK] checksums
|
Durability : \*[OK] :\*[OK] checksums
|
||||||
Access Time : 0.1 to 2ms :a few µs (cache) to a few ms (first access with a hard disk)
|
Access Time : 0.1 to 2ms :T{
|
||||||
|
a few µs (cache), a few dozen µs (SSD+NVMe), a few hundred µs (SSD)
|
||||||
|
and up to a dozen ms (hard disk)
|
||||||
|
T}
|
||||||
High avail. : \*[OK] :T{
|
High avail. : \*[OK] :T{
|
||||||
\*[OK] RAID & variants plus many distributed or cluster filesystems
|
\*[OK] RAID & variants plus many distributed or cluster filesystems
|
||||||
T}
|
T}
|
||||||
|
@ -1414,11 +1417,15 @@ Beside CRUD operations, a small project could imply basic relations between data
|
||||||
in DBMS jargon) and a few thousand operations per second.
|
in DBMS jargon) and a few thousand operations per second.
|
||||||
Both relations and transactions could be handled by the application, not necessarily by the database system itself.
|
Both relations and transactions could be handled by the application, not necessarily by the database system itself.
|
||||||
.FOOTNOTE2
|
.FOOTNOTE2
|
||||||
Performance is simply not a problem for most use nowadays.
|
Performance simply isn't a problem for most uses nowadays.
|
||||||
Having a directory with a few million entries is fine on modern filesystems.
|
Having a directory with a few million entries is fine on modern filesystems since reaching a file by name (with its full path) doesn't trigger a linear search.
|
||||||
The first file access is slow (a few ms) then the kernel
|
The first file access is slow\*[*] then the kernel
|
||||||
.B automatically
|
.B automatically
|
||||||
caches the file, making it reachable in about a few dozen µs which is virtually nothing.
|
caches the file, making it reachable in about a few dozen µs which is virtually nothing.
|
||||||
|
.FOOTNOTE1
|
||||||
|
The first access to a file on a hard drive can be as slow as a few miliseconds and about a hundred microseconds for a SSD.
|
||||||
|
But today with the NVMe protocol, the latency to the first file access can be as low as a dozen microseconds.
|
||||||
|
.FOOTNOTE2
|
||||||
.
|
.
|
||||||
.
|
.
|
||||||
.SECTION Alternatives
|
.SECTION Alternatives
|
||||||
|
@ -1451,7 +1458,18 @@ Sure, DODB doesn't have the same features, but are they worth multiplying the co
|
||||||
|
|
||||||
.BULLET
|
.BULLET
|
||||||
.B "Embedded SQL database" .
|
.B "Embedded SQL database" .
|
||||||
Examples: SQLite and DuckDB.
|
Example:
|
||||||
|
.B SQLite .
|
||||||
|
This is a library (for
|
||||||
|
.dq "serverless"
|
||||||
|
applications) implementing SQL for database operations, making it far more complex and slower than DODB.
|
||||||
|
|
||||||
|
As SQLite,
|
||||||
|
.B DuckDB
|
||||||
|
also is a library, with a slightly different objective.
|
||||||
|
Instead of being written and optimized to answer real-time requests, the goal is to perform operations on large data sets with a focus on analytical processing.
|
||||||
|
And again, as SQLite, DuckDB implements SQL and sophisticated operations making it far more complex than DODB.
|
||||||
|
Though, the stated goal is fairly different from the subject of this paper which may explain its complexity.
|
||||||
|
|
||||||
.BULLET
|
.BULLET
|
||||||
.B "New types of SQL" .
|
.B "New types of SQL" .
|
||||||
|
@ -1460,20 +1478,39 @@ Example:
|
||||||
(modern SQL-like with easy-of-use complex relations),
|
(modern SQL-like with easy-of-use complex relations),
|
||||||
.B RethinkDB
|
.B RethinkDB
|
||||||
(modern SQL-like, JSON exchanges, distributed).
|
(modern SQL-like, JSON exchanges, distributed).
|
||||||
|
These new applications try to improve the SQL language with the benefit of hindsight provided by the experience with current SQL technologies.
|
||||||
|
Beside a few simplified operations compared to current SQL equivalent, and some performance improvements thanks to fine-grained typing, none of them tackle the complexity problem of the database itself.
|
||||||
|
A new SQL-like language would still require an enormous piece of code to run.
|
||||||
|
|
||||||
.BULLET
|
.BULLET
|
||||||
.B "Key-value stores."
|
.B "Key-value stores."
|
||||||
Examples:
|
Example:
|
||||||
.B RocksDB
|
|
||||||
(embedded),
|
|
||||||
.B Memcached
|
.B Memcached
|
||||||
(application to store data cache, not to be used as a primary database system),
|
(application to store data cache, not to be used as a primary database system).
|
||||||
.B CockroachDB
|
KV stores are often used as cache for traditional DBMSs.
|
||||||
(proprietary, distributed, ACID transactions)
|
KV stores have the advantage of being simpler than SQL databases, Memcached
|
||||||
|
.dq only
|
||||||
|
has 61 kloc for example.
|
||||||
|
|
||||||
|
However, most KV stores implement features beyond the core functionality.
|
||||||
|
.B Redis ,
|
||||||
|
and its open-source fork
|
||||||
|
.B Valkey ,
|
||||||
|
are complex KV stores with a lot of features, including support for many typed data, message broker, clustering, distributed cache, optional durability, server-side scripting, etc.
|
||||||
|
|
||||||
|
Many other KV stores can be mentioned, such as
|
||||||
|
.B LevelDB
|
||||||
|
(embedded),
|
||||||
|
and
|
||||||
|
.B RocksDB
|
||||||
|
(fork of LevelDB with added features, such as transactions, snapshots, bloom filters, optimizations for multi-CPUs, etc.),
|
||||||
|
.B CockroachDB
|
||||||
|
(proprietary, distributed, ACID transactions), etc.
|
||||||
|
|
||||||
|
.KS
|
||||||
.BULLET
|
.BULLET
|
||||||
.B "Document databases" .
|
.B "Document databases" .
|
||||||
Such as DODB, many other document-oriented databases exist.
|
Many other document-oriented databases exist beside DODB.
|
||||||
For example,
|
For example,
|
||||||
.B CouchDB
|
.B CouchDB
|
||||||
(distributed, fault-tolerant, RESTful HTTP and JSON API…),
|
(distributed, fault-tolerant, RESTful HTTP and JSON API…),
|
||||||
|
@ -1481,14 +1518,12 @@ For example,
|
||||||
(proprietary, ACID transactions, replication…),
|
(proprietary, ACID transactions, replication…),
|
||||||
.B UnQlite
|
.B UnQlite
|
||||||
(embedded, ACID transactions, embedded scripting language…).
|
(embedded, ACID transactions, embedded scripting language…).
|
||||||
|
As far as the author knows, none of them is as simple as DODB.
|
||||||
.BULLET
|
.KE
|
||||||
.B "Redis"
|
|
||||||
|
|
||||||
.BULLET
|
|
||||||
.B "duckdb"
|
|
||||||
.ENDBULLET
|
.ENDBULLET
|
||||||
|
|
||||||
|
.B Cassandra
|
||||||
|
|
||||||
.TBD
|
.TBD
|
||||||
.
|
.
|
||||||
.SECTION Future work
|
.SECTION Future work
|
||||||
|
|
Loading…
Add table
Reference in a new issue