Uniadmin
Skip to content

HBase vs. Cassandra

Wir wol­len hier nicht auf die archi­tek­to­ni­schen Unter­schie­de zwi­schen den bei­den Daten­bank­sys­te­men ein­ge­hen, etwa daß Cas­san­dra im Gegen­satz zu HBa­se mas­ter­less funk­tio­niert und kei­nen Sin­gle-Point-of-Fail­ure hat, son­dern viel­mehr auf die Gemein­sam­kei­ten der bei­den und die in den Gemein­sam­kei­ten zu fin­den­den gra­vie­ren­den Unterschiede.

Bei­de Daten­ban­ken gehö­ren zur Fami­lie der NoS­QL-Daten­ban­ken, die nach dem Wide-Column Store-Modell orga­ni­siert sind. Grund­sätz­lich kann man die­se Form als simp­len Key-Value-Store auf­fas­sen, wobei sich der Schlüs­sel aus drei Teil­schlüs­seln zusam­men­setzt: Dem Row­Key, der Colum­nFa­mi­ly und dem ColumnKey.

Der Unter­schied zwi­schen Cas­san­dra und HBa­se besteht nun dar­in, daß es bei Cas­san­dra kei­ne Mög­lich­keit gibt, die Daten nach dem Row­Key sor­tiert zu scan­nen.

Das ist ein gewal­ti­ger Unter­schied, der das Nut­zungs­feld erheb­lich ein­schränkt, zumal alle Daten­sät­ze, die den sel­ben Row­Key haben, auf einem ein­zi­gen Ser­ver Platz haben müssen.

Es gab (oder gibt) in Cas­san­dra die Mög­lich­keit zur Par­ti­tio­nie­rung den Byte­Or­der­Par­ti­tio­ner ein­zu­set­zen. Damit lie­ße sich sor­tiert nach dem Row­Key scan­nen (Row­Key heißt im Cas­san­dra-Sprech übri­gens Par­ti­ti­on Key), aber für die Par­ti­tio­nie­rung ist Hand­ar­beit not­wen­dig, indem für die zu erwar­ten­den Berei­che des Row­Keys ent­spre­chend Nodes in den Ring ein­ge­fügt wer­den. HBa­se dage­gen ver­teilt die Daten auto­ma­tisch auf die Region-Server.

Was bei Cas­san­dra zu allem Über­fluß hin­zu­kommt, ist daß als API aus­schließ­lich nur noch CQL pro­pa­giert wird (Cas­san­dra Thrift soll in zukünf­ti­gen Ver­sio­nen nicht mehr ver­füg­bar sein). CQL hat dem Anschein nach eine Ähn­lich­keit mit SQL, bil­det aller­dings nur stark begrenzt die Funk­tio­na­li­tät von SQL ab. Für die Arbeit mit Cas­san­dra ist ein tie­fes Ver­ständ­nis des Wide-Column-Store-Models not­wen­dig, das sich in CQL nicht widerspiegelt.

Ein Pro­gram­mie­rer muß sich sei­ne Daten­bank­ab­fra­gen im Wide-Column-Store-Model über­le­gen und die­se dann in das beschnit­te­ne SQL namens CQL hinein­for­mu­lie­ren. Ein Pro­gram­mie­rer, der nur von der SQL-Sei­te her denkt, wird schnell von uner­war­te­ten Ergeb­nis­sen sei­ner Abfra­gen überrascht.

Durch CQL wird Cas­san­dra am Ende zu einer schlech­ten SQL-Daten­bank degra­diert, der man voll­stän­di­ge­re SQL-Daten­bank­sys­te­me wie MyS­QL in den vie­len Fäl­len vor­zie­hen wird, weil Repli­ka­tio­nen und Shar­ding auch dort kein Pro­blem mehr sind.

Tags: Datenbanken

    Post a comment