Eigentlich bin ich ja offen gegenüber jeglicher Technologie, sofern mir diese keinen Grund gibt, es anders zu handhaben. Nach dem .NET und Java sich bereits länger aus diesem Gunstkreis verabschieded haben – beide mehr oder weniger auf Grund ihrer Umsetzung und proprietären Lizenzen -, gesellt sich mit der Berkeley-DB nun die erste größere freie Software in die Riege der „Bloß nicht“-Kandidaten.
Auslöser für diese ganze Aufregung war mehr oder weniger ein Indiz beim Versand von Status-Emails meines Servers. Dieser sendet mir dank apticron einmal am Tag Informationen über ausstehende Updates. Jedoch seit dem 30. Juni gab es scheinbar nichts Neues – zumindest, blieb mein Posteingang in dieser Hinsicht leer. Also schaute ich in die Logfiles des Servers und stieß auf zahlreiche seltsame Phänomäne, die sich nicht auf den ersten Blick einordnen ließen. Da aber ein Kumpel bereits in den vergangenen Tagen Probleme bei seinem Server hatte, ging nach kurzer Einschätzung der Lage eine Anfrage an ihn raus. Nach kurzer Diagnose bestätigte sich der Verdacht: Der Postgrey-Daemon, der das Maß an unliebsamen Sendungen auf jene mit einer eigenen Mail-Queue reduzieren soll, verweigerte aus irgendeinem Grund.
Als Problemlösung nannte mein Kumpel die Reinstallation (mit Purge) des Postgrey-Paketes, was sich als Volltreffer herausstellte: Beim Versuch das Postgrey-Paket unter Debian wieder zu installieren meldete sich prompt apt-listbugs mit dem Hinweis auf Debian-Fehlerreport #519707. Spätestens beim Lesen der dort genannten Fehlerursache erübrigt sich jede weitere Frage, warum BDB bei mir nicht nur geringe Abneigung genießt…
Die Berkeley-DB ist – wie der Name bereits sagt – eine Datenbank. Oh, warte: Nein, ist sie nicht. Sie tut nor so. Zwar ist BDB zu früheren Zeiten einmal die einzige Möglichkeit gewesen, Transaktionssicherheit in MySQL zu bekommen, jedoch ist diese Existenzberechtigung spätestens seit InnoDB auch dort gestorben.
Bleiben noch die zahlreichen anderen Projekte, in denen BDB eingesetzt wird: Cyrus IMAP Server, SpamAssassin, SVN, OpenLDAP, memcachedb, PAM, … Was für ein Glück, dass ich mich noch anmelden konnte! Das kommt wahrscheinlich beim nächsten Frickel-Patch am Datenformat!
Während man bei MySQL eine Datenbank eines alten 3.22er Servers reibungslos (im laufenden Betrieb) in einen 5.1er MySQL einhängen kann (Datenverzeichnis reinkopieren reicht), reicht es bei BDB ja schon, wenn die an ihrer Runtime friemeln. Ist ja auch zu viel verlangt, über ein Frickel-Update hinaus das Datenformat konvertieren zu können! Stattdessen darf man sich mit umständlichen Kommandozeilentools selber darum kümmern, die zahlreichen dezentralen Datenbanken zuerst zu exportieren, um sie dann wieder zu importieren. Ich bin zwar Admin und ich weiß auch, dass das ein Vollzeitjob ist, dass heißt aber noch lang nicht, dass ich Masochist bin!
Ein Glück, dass SVN BDB nicht mehr als Default drin hat, sondern allein für die Abwärtskompatibel zu sein. Das war auch das erste, was ich gemacht habe, als SVN das konnte: Via einem Skript jegliche Repositories (auf dem System immerhin über 500 Stück) exportiert und als FSFS reimportiert. Dauerte 5 Minuten und brauchte seither kein einziges Mal mehr mich mit BDB rumschlagen. Ich hoffe, diese Säuche wird endlich einmal konsequent eliminiert: SQLite3 ist doch auch ganz nett 😉 Und zur Not tuts auch MyISAM …