Jake NoSQL pouzivate?

Tomas Vondra tv na fuzzy.cz
Pondělí Březen 19 18:14:29 CET 2012


On 19 Březen 2012, 17:38, Jan Kasprzak wrote:
> 	Dobry den,
>
> mate nekdo nejake prakticke zkusenosti s distribuovanymi key-value
> ulozisti
> dat? Co pouzivate?
>
> 	Co bych potreboval ja (ad-hoc poradi bez uvedeni priorit):

Mě tady celkem chybí popis toho co tam vlastně chcete ukládat. To je IMHO
jeden z důležitých parametrů který ovlivňuje výběr NoSQL databáze (jinak
se to bude špatně používat, může to mít dopad na výkon apod.)

Chcete column store, K/V store nebo document store? Nebo vám stačí prostý
distribuovaný filesystém jako je HDFS?

> - replikace, tolerance k docasnemu vypadku (reboot stroje) i k trvalemu
> 	vypadku (stroj shorel a nikdy ze uz do klastru nevrati), moznost
> 	pridat dalsi stroj
> - zohledneni fyzicke topologie (napriklad delat repliky jinam nez do toho
> 	stejneho PDU nebo racku)
> - staci plne konzistentni operace (nepotrebuju evenutally-consistent
> 	zapisy a vector-clock jako ma Amazon Dynamo)

Výrok "stačí plně konzistentní operace" mi přijde nesmyslný, protože
"silná konzistence" je silnější požadavek než "eventually consistent."

Navíc výše vyžadujete odolnost k výpadkům (A) takže předpokládám že chcete
i odolnost proti partitioningu (P), což podle CAP teorému znamená že
nemůžete mít silnou konzistenci.

> - hodila by se i podpora velkych "value" (bloby, velke soubory, ...)

Co znamená "velkých"? To eliminuje některé K/V systémy (např. Redis umí
max. 512MB).

> - rozhrani minimalne pro Perl
> - podpora pro predem hlaseny vypadek vitana ("ted budu chtit rebootovat
> 	tento stroj").
> - pokud mozno psane v necem jinem nez Java (no flames, please;
> 	Java ma tendenci s sebou tahat spousty dalsich Javovych technologii
> 	a nedivat se na okolni ne-Javovy svet, navic prenositelnost na ruzne
> 	verze JVM je podle mych zkusenosti slaba).

No, zrovna Cassandra a Hadoop tímhle myslím přehnaně netrpí, ale chápu.

>
> 	Zatim jsem se dival na tyhle veci:

Z vámi uvedených bych volil HDFS pokud bych potřeboval jenom "prostý"
distribuovaný souborový systém, Cassandru nebo HBase pokud bych chtěl
column store, a asi CouchBase pokud bych chtěl document store a k/v. Ještě
bych koukal na MongoDB (ale to je jen document store).

Nicméně já nejsem "zaujatý" proti Javě ;-)

> - Project Voldemort (ale Java)
> - Apache Cassandra (taky Java, navic Facebook presel na HBase)
> - HBase (ale Java, navic to s sebou tahne cely Hadoop)
> - Riak (zatim muj favorit, i kdyz nevim jestli se nemam bat Erlangu :-)
> - CouchBase (nema plnohodnotne rozhrani pro Perl, jestli se nepletu)

Záleží na tom co myslíte plnohodnotným rozhraním ... CouchDB má záměrně
RESTful JSON API, o ničem dalším nevím. Navíc CouchDB + Membase vypadá
jako zajímavá kombinace (document store + k/v store).

T.



Další informace o konferenci Linux