Zalety korzystania z cql nad oszczędnością

Czy są jakieś wyraźne korzyści z używania cql nad thrift, czy jest to po prostu przypadek programistów zbyt przyzwyczajonych do SQL? Chcę przełączyć się z zapytań oszczędnościowych na cql, jedyny problem to nie jestem pewien wad tego. Co to jest?

Author: Daniel Tomey, 2013-03-29

2 answers

Querying
W CQL można odpytywać Cassandrę i pobierać dane w kilku wierszach (używając sterownika JDBC):

String query = "SELECT * FROM message;";
PreparedStatement statement = con.prepareStatement(query);
W przypadku API opartych na thrift jest to nieco bardziej skomplikowane (przykład z Astyanax):
OperationResult<ColumnList<String>> result = 
     keyspace.prepareQuery(mail/*specify columnfamily structure*/)
             .getKey("lyuben@1363115059").execute();
ColumnList<String> columns = result.getResult();

Wydajność
W oparciu o benchmarki przeprowadzone przez Acunu, Thrift (RPC) nieznacznie wyprzedza CQL, jeśli chodzi o wydajność zapytań, ale musisz być w sytuacji, w której wysoka przepustowość jest kluczowa dla tej przewagi wydajności, aby mieć znaczące korzyści.


Niektóre doskonałe Artykuły do wyszukiwania są:

EDIT

Powyższe benchmarki są nieaktualne, paul dostarczył nowsze benchmarki na przygotowanych deklaracjach .

 17
Author: Lyuben Todorov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-04 21:18:11

Odpowiedź Lyubena jest dobra, ale wierzę, że może być źle poinformowany w kilku punktach. Po pierwsze, powinieneś mieć świadomość, że API Thrift nie otrzyma nowych funkcji; jest tam dla wstecznej kompatybilności i nie jest zalecane dla nowych projektów. Istnieją już pewne funkcje, których nie można używać za pośrednictwem interfejsu Thrift.

Innym czynnikiem jest to, że cytowane benchmarki z Acunu wprowadzają w błąd; nie mierzą wydajności CQL za pomocą przygotowanych oświadczeń. Zobacz też, na przykład wykresy w https://issues.apache.org/jira/browse/CASSANDRA-3634 (prawdopodobnie ten sam zestaw danych, na którym opiera się post Acunu, ponieważ Eric Evans napisał oba). W ostatnim roku wprowadzono również pewne ulepszenia w zakresie parsowania CQL i szybkości wykonywania. Nie jest prawdopodobne, że zaobserwujesz prawdziwą różnicę prędkości między CQL 3 a Thrift.

Wreszcie, chyba nawet nie zgadzam się, że oszczędność jest bardziej elastyczna. CQL 3 datamodel pozwala na wykorzystanie tych samych danych struktury, które Thrift robi dla prawie wszystkich zastosowań, które nie są antypatternami; to po prostu pozwala myśleć o modelu w bardziej zorganizowany sposób. Na przykład Lyuben wymieniał wiersze o różnej liczbie kolumn. Tabela CQL 3 może nadal korzystać z tej możliwości: Istnieje różnica między "rzędami silnika pamięci" (które są niskopoziomową pamięcią masową Cassandry i tym, czego Thrift używa bezpośrednio) i "rzędami CQL" (co widzisz przez interfejs Thrift). CQL wykonuje tylko dodatkową pracę niezbędną do wizualizuj wiersze szerokiego silnika pamięci masowej jako uporządkowane tabele.

Jest to trochę trudne do wyjaśnienia w szybkiej odpowiedzi SO, ale zobacz ten post dla nieco łagodnego wyjaśnienia.

 22
Author: the paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-29 17:19:16