2013-04-18 28 views
16

Cassandra ile yeni bir proje başlatıyorum (ve en son kararlı (1.2.x) sürümünü kullanmayı planlıyoruz). Hector, Astyanax, Cassandra-jdbc ...Yeni Cassandra projesi - Astyanax veya Java Sürücüsü?

gibi birkaç farklı Java kütüphanesini denedim, bunlar arasında (kısaca) benim seçimim Astyanax. Ama sonra da yeni CQL ikili protokolünü destekleyen DataStax'ın Java Sürücüsünü buldum ve denedim ve sadece CQL kullanıyorsan daha temiz. Ve sürüm 1.0.0 GA yakında çıkacak gibi görünüyor.

Hangisini önerirsiniz? Teşekkürler.

+2

+1! harika api! –

cevap

19

Cql3 tabanlı bir sürücüyle gitmenizi tavsiye ederim. Bazı seçenekler, eşzamansız bağlantıları destekleyen JDBC driver veya daha da iyisi Datastax's driver'dur. Datastax'ın sürücüsünü kendiniz yapmanız gerekebilir, ancak bu maven kullanarak kolaylıkla yapılabilir. Yukarıda açıklandığı gibi

:

Thrift gitmiyor Cassandra'ya herhangi bir yeni özellik alıyor gibi, onun geriye karşılaştırılabilmesi ve yeni projeler için CQL tabanlı sürücüleri kullanmak çoğu C * topluluk üyeleri tavsiye için tutuluyor CQL3'ün Cassandra için tasarruf API'sinden daha basit ve genel olarak daha iyi bir API olduğuna inanıyoruz. source

Ayrıca CQL performansı çok çabuk daha iyi oluyor - Bu nedenle, yeni projeler/uygulamalar CQL3

kullanmaları önerilir.

<dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>cassandra-driver-parent</artifactId> 
    <version>1.0.0</version> 
</dependency> 
9

Ben şahsen kullanmış: İşte cevabı bir maven central repository maven için sadece bağımlılık eklemek kullanmak yüzden şimdi sürücü için oluşturulan yazılmıştır yana bazı eski benchmarks.
GÜNCELLEME

vardır Hector, Astyanax, Pelops, Akıcı Cassandra, Datastax'ın Sürücüsü ve Pycassa ve pek çok API kullandıktan sonra sonunda Astyanax'ın bana en uygun olduğunu anladım (Kişisel düşüncem). Ligde diğerlerinden ayırt

i Astyanax bulunan özellik API

  • Kompozit sütun desteği
  • Bağlantı
  • Gecikme havuzlaması
  • Belgeleme kullanımının

    • kolaylığı vardır
    • Güncelleştirme
  • +8

    Hector ve datastax'ın sürücüsü kompozit sütunları destekliyor (diğerleri hakkında emin değil) ve CQL'in Astyanax'ten daha kolay olduğunu söyleyebilirim. Ayrıca, tasarruf sağlanmıştır, bu yüzden yeni projeler için CQL3 kullanılmalıdır. –

    +2

    iyi biliyorum dostum, aslında benim düşünceme erişim kolaylığı vardı. Evet CQL her zaman daha kolay bir seçenek olmuştur ve bu nedenle de (iyi bilinen gerçek RDBMS arka planı) kalacaktır ve Astyanax kullanıcılarının maksimum yüzdesinin bile kendi API'larından CQL ifadeleri kullandığını garanti edebilirim. Astyanax için – abhi

    +9

    +1. CQL daha kolay değildir - sadece dikişlidir: sadece düzgün olmayan sorgular yazabilir ve sorunla karşılaşabilirsiniz, çünkü ilişkisel db olacağından ve nosql mağazasının anlamını gerçekten anlamanız için sizi zorlamadığından sizi bir şey yapar. –

    6

    Astyanax'ı kullandım. CQL'den 5 kat daha fazla kod yazarken sorun yaşamanız şartıyla iyi belgelenmiş ve kullanımı kolaydır.

    Şu anda CQL kullanıyorum. Çalıştığım kişiler Astyanax kodunu tam olarak kavramamışlar - neden sütun isimleri için sınıf yazmaları gerekiyor. Astyanax'ı ya da Hector'u kullanmazsanız Cassandra'nın iç yapısını hiç bir zaman anlayamayacağınızı düşünüyorum.

    4

    Yeni başlayan bir proje için kesinlikle yeni DataStax Java Driver ve Cassandra 1.2 ile gitmelisiniz. Şoför GA'ya gitti ve yeni projenizi geliştirirken, hem sürücü hem de Cassandra 1.2 önümüzdeki birkaç ay içinde daha istikrarlı olacak.

    1

    Zanson/Valchkou'ya katılıyorum. DataStax Java Driver gelecek. Cassandra'yı SQL ile çalıştırmak çok kolay. Bu arada, DataStax Java Driver'un basit bir sarıcısı olan CassandraExecutor'u da öneririm. Java Sürücü karşılaştırarak, CassandraExecutor özelliklerini aşağıda etti: SQL/varlık ile (senkron/zaman uyumsuz) işlemleri (CRUD) için

    • Tutarlı/Entegre/Özlü API'ler. farklı destekler
    • DataSet,/birleştirme/sıralama/GroupBy/join/birlik/BİRLİĞİtüm/hariç/kesiştiği/paginate/filtre/sayımı/toJOSN/toXML/toCVS ... İşte

    basit CRUD numuneyi (//güncelleme okumak oluşturmak/silme):

    Account account = createAccount(); 
    // create 
    String sql_insert = NE.insert(ID, GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql(); 
    cassandraExecutor.execute(sql_insert, account); 
    
    // read 
    String sql_selectByGUI = NE.select(ID, GUI, FIRST_NAME, LAST_NAME).from(Account._).where(L.eq(ID, L.QME)).sql(); 
    Account dbAccount = cassandraExecutor.queryForEntity(Account.class, sql_selectByGUI, account); 
    
    // update 
    String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(ID, L.QME)).sql(); 
    
    dbAccount.setFirstName("newFirstName"); 
    cassandraExecutor.execute(sql_updateByLastName, dbAccount); 
    
    // delete 
    String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(ID, L.QME)).sql(); 
    cassandraExecutor.execute(sql_deleteByFirstName, dbAccount); 
    

    (Deklarasyonu: Ben CassandraExecutor geliştiricisi olduğum) Astyanax için

    İlgili konular