Content deleted Content added
Citation bot (talk | contribs) Alter: url, template type. URLs might have been internationalized/anonymized. Add: chapter-url. Removed or converted URL. Some additions/deletions were actually parameter name changes. | You can use this bot yourself. Report bugs here. | Suggested by AManWithNoPlan | All pages linked from cached copy of User:AManWithNoPlan/sandbox2 | via #UCB_webform_linked |
Jason Quinn (talk | contribs) cleanup of cite templates and added more cite information |
||
Line 17:
* ''ndbm'' ("new dbm"), based on the original dbm with some new features.
* ''gdbm'' ("GNU dbm"), [[GNU]] rewrite of the library implementing ''ndbm'' features and its own interface.<ref>{{cite web |title=GDBM |url=https://www.gnu.org.ua/software/gdbm/ |website=www.gnu.org.ua}}</ref>
* ''sdbm'' ("small dbm"), a [[public ___domain]] rewrite of ''dbm''. It is a part of the standard distributions for [[Perl]] and [[Ruby_(programming_language)|Ruby]].<ref>{{cite web |last1=yigit |first1=ozan |title=sdbm.bun |website=cse.yorku.ca |url=http://www.cse.yorku.ca/~oz/sdbm.bun
* qdbm, a higher-performance ''dbm'' employing many of the same techniques as Tokyo/Kyoto Cabinet. Written by the same author before they moved on to the cabinets.<ref>{{cite web |date=2006 |title=QDBM: Quick Database Manager |website=fallabs.com |url=https://fallabs.com/qdbm/
* tdb, a simple database used by [[Samba (software)|Samba]] that supports multiple writers. Has a gdbm-based API.<ref>{{cite web |title=tdb: Main Page |
* [[Berkeley DB]], 1991 replacement of ndbm by [[Sleepycat Software]] (now [[Oracle Corporation|Oracle]]) created to get around the AT&T Unix copyright on [[Berkeley Software Distribution|BSD]]. It features many extensions like parallelism, transactional control, hashing, and B tree storage.
* [[Lightning Memory-Mapped Database|LMDB]]: [[copy-on-write]] [[memory-mapped file|memory-mapped]] [[B+ tree]] implementation in [[C (programming language)|C]] with a Berkeley-style API.
The following databases are dbm-inspired, but they do not directly provide a dbm interface, even though it would be trivial to wrap one:
* [[Tokyo Cabinet and Kyoto Cabinet]]: [[C (programming language)|C]] and [[C++]] implementations employing [[hash table]], [[B+ tree]], or fixed-length [[array data structure|array]] structures by FAL Labs. Has improvements to parallelism.<ref>
* [[WiredTiger]]: database with traditional row-oriented and column-oriented storage.
== Availability ==
As of 2001, the ''ndbm'' implementation of DBM was standard on Solaris and IRIX, whereas ''gdbm'' is ubiquitous on [[Linux]]. The Berkeley DB implementations were standard on some free operating systems.<ref name="2001-hazel-exim"/><ref name=fuzz/> After a change of licensing of the BDB to [[GNU AGPL]] in 2013, projects like [[Debian]] have moved to LMDB.<ref name=deb>{{cite mailing list |last=Surý
== Reliability ==
A 2018 [[american fuzzy lop (fuzzer)|AFL]] [[fuzzing]] test against many DBM-family databases exposed many problems in implementations when it comes to corrupt or invalid database files. Only [[cdb (software)|''freecdb'']] by [[Daniel J. Bernstein]] showed no crashes. The authors of gdbm, tdb, and lmdb were prompt to respond. Berkeley DB fell behind due to the sheer amount of other issues;<ref name=fuzz>{{cite web |
== See also ==
Line 51:
==Bibliography==
{{refbegin}}
*{{cite book |ref=harv
*{{cite book |ref=harv |
*{{cite book |ref=harv |
{{refend}}
*
*
*
[[Category:Database engines]]
|