DBM (computing): Difference between revisions

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
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 |website=cse.yorku.ca |accessdate=8 May 2019}}</ref><ref>{{cite web |title=class SDBM |website=Documentation for Ruby 2.4.0 |url=https://docs.ruby-lang.org/en/2.4.0/SDBM.html |website=Documentation for Ruby 2.4.0 |quote=Note that Ruby comes with the source code for SDBM, while the DBM and GDBM standard libraries rely on external libraries and headers.}}</ref>
* 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/ |website=fallabs.com |date=2006}}</ref>
* 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 |urlwebsite=https://tdb.samba.org/ |websiteurl=https://tdb.samba.org/}}</ref>
* [[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> {{ cite web |date=5 urlAugust = http://fallabs.com/tokyocabinet/spex-ja.html2010 | title = Tokyo Cabinet第1版基本仕様書 | access-date = 25 May 2019 | date = 5 August 2010 | website = Fall Labs | language = ja | trans-title = Fundamental Specifications of Tokyo Cabinet Version 1 |url=http://fallabs.com/tokyocabinet/spex-ja.html |access-date=25 May 2019 | quote = Tokyo CabinetはGDBMやQDBMの後継として次の点を目標として開発されました。これらの目標は達成されており、Tokyo Cabinetは従来のDBMを置き換える製品だと言えます。 | format = html | archive-url = https://web.archive.org/web/20181028124047/http://fallabs.com/tokyocabinet/spex-ja.html | archive-date = 28 October 2018 | df = dmy-all }} </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ý url|first=https://lists.debian.org/debian-devel/Ondřej |date=June 19, 2014/06/msg00338.html | title=New project goal: Get rid of Berkeley DB (post jessie) | mailinglist=debian-devel | date=June 19, 2014 | author=Ondřej Surý |publisher=[[Debian]] |url=https://lists.debian.org/debian-devel/2014/06/msg00338.html}}</ref>
 
== 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 |last1last=Debroux |first1first=Lionel |date=16 Jun 2018 |title=oss-security - Fun with DBM-type databases... |website=openwall.com |url=https://www.openwall.com/lists/oss-security/2018/06/17/1 |website=openwall.com |date=16 Jun 2018}}</ref> the fixes would be irrelevant to OSS users anyway due to the licensing change locking them back on an old version.<ref name=deb/>
 
== See also ==
Line 51:
==Bibliography==
{{refbegin}}
*{{cite book |ref=harv |year=2001 |last=Hazel |first=Philip |publisheryear=O'Reilly2001 |title=Exim: The Mail Transfer Agent |publisher=O'Reilly |url=https://books.google.com/books?id=AcLDAQAAQBAJ&pg=PT500}}
*{{cite book |ref=harv |yearlast1=2001Ladd |first1=Eric |last1last2=LaddO'Donnell |first2=Jim |last2year=O'Donnell |publisher=Que2001 |title=Using XHTML, XML and Java 2: Platinum Edition |publisher=Que |isbn=9780789724731 |url=https://books.google.com/books?id=NLc_TQiWvo4C&pg=PA823}}
*{{cite book |ref=harv |yearlast=2007Kew |first=Nick |lastyear=Kew |publisher=Prentice Hall Professional2007 |title=The Apache Modules Book: Application Development with Apache |publisher=Prentice Hall Professional |isbn=9780132704502 |url=https://books.google.com/books?id=HTo_AmTpQPMC&pg=PA80}}
{{refend}}
* [https://apr.apache.org/docs/apr-util/0.9/group__APR__Util__DBM__SDBM.html SDBM library] @[[The Apache Software Foundation|Apache]]
* {{citationcite | chapter-url=https://books.google.com/books?id=vvuzDziOMeMC&pg=PT270book | titlelast1=Beginning Linux ProgrammingMatthew | first1=Neil | last1last2=MatthewStones | first2=Richard | last2year=Stones2008 | publishertitle=WileyBeginning |Linux date=2008Programming | chapter=Databases |publisher=Wiley ref|url=nonehttps://books.google.com/books?id=vvuzDziOMeMC&pg=PT270}}
* {{cite web |authorlast1=Olson, |first1=Michael A. |last2=Bostic &|first2=Keith |last3=Seltzer |first3=Margo |year=1999 |title=Berkeley DB |work=Proceedings of the FREENIX Track:1999 USENIX Annual Technical Conference |url=http://www.usenix.org/events/usenix99/full_papers/olson/olson.pdf}}
 
[[Category:Database engines]]