Jake NoSQL pouzivate?

Tomas Vondra tv na fuzzy.cz
Pondělí Březen 19 18:17:36 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