Jake NoSQL pouzivate?

Jan Kasprzak kas na fi.muni.cz
Pondělí Březen 19 19:00:49 CET 2012


Tomas Vondra wrote:
: 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?

	Ono to neni predem uplne urcene. Mam spousty ruznych dat (ruzne
v relacnich databazich na jedne strane, a ve filesystemech na druhe strane)
a uvazuju, co z toho by slo dat do nejakeho NoSQL. Cili K/V, pripadne
K/blob store je asi na prvnim miste.

: > - 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."

	Ono to tak muze znit, ale neni tomu tak. Silna konzistence jenom
znamena, ze cekate az dobehnou zapisy do hodne replik a nemusite resit
split-brain a dalsi slozitosti. Plne konzistentni operace jsou pomalejsi,
ale jednodussi na implementaci nez 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.

	Skutecne split-brain (partitioning) neresim.

: > - 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).

	To je malo. Obcas i ten image DVD nekdo chce ukladat. Ale jak rikam,
zatim sonduju moznosti - mozna vysledek povede na nekolik systemu.

: > - 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.

	Tim lepe (off-topic: zkousel jsem napriklad nejakou dobu pouzivat
freemind, a ten blil ven pokazde jine vyjimky podle jine verze JVM, vcetne te,
o ktere v dokumentaci prohlasovali, ze je to ta jedina spravna).

: > 	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ě ;-)

	No a teda mate s tim realne zkusenosti? Na realnem produkcnim
hardwaru, kde obcas/casto muze dochazet k vypadkum?

: > - 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).

	U CouchBase je problem, ze oni maji MemcacheD protokol pro komunikaci
s jednotlivymi replikami v roli "dummy uloziste", a zrejme jeste neco nad
tim, co se stara o replikaci a komunikaci s vice replikami, atd. No a Perlove
rozhrani pokud vim existuje jen pro ten zakladni MemcacheD protokol.

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list.     --Alan Cox


Další informace o konferenci Linux