Alternatives++.
This commit is contained in:
		
							parent
							
								
									8ba6105d82
								
							
						
					
					
						commit
						62ba6ecf8d
					
				
					 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