2010-02-06 38 views
17

Farklı kaynaklardan gelen bilgi akışını saklamak için Cassandra'yı kullanmayı düşünüyoruz.Cassandra zaman dizileri verisi

Karşı karşıya olduğumuz bir sorun, iki tarih arasında sorgulamanın en iyi yoludur. Örneğin, datetime dt1 ile datetime dt2 arasında bir nesne almamız gerekecektir.

Şu anda oluşturulan unix zaman damgasını asıl nesneye işaret eden anahtar olarak düşünüyoruz ve sonra almak için sorgulamak için get_key_range özelliğini kullanıyoruz?

İki öğe aynı zaman damgasına sahipse, bu açıkça işe yaramaz.

Genel olarak noSQL mağazalarında datetime yapmak için en iyi yol bu mu?

+2

Verilerinizi en nihayetinde nasıl modellediğiniz konusunda merak ediyorsunuz? Benzer bir şeye bakıyoruz ve en iyi uygulamaları, vb. Toplamaya çalışıyorum. – AlexGad

cevap

15

Cassandra satırları çok büyük olabilir, bu nedenle bir CF'deki satırlar yerine satırdaki sütunlar olarak modellemeyi düşünün; daha sonra satır dilimlerinden daha hızlı olan sütun dilimi işlemlerini kullanabilirsiniz. Bununla ilişkili "doğal" anahtar yoksa, "2010/02/08 13:00" gibi günlük veya saatlik anahtarları kullanabilirsiniz.

Aksi takdirde, aralık sorguları kullanılarak (get_key_range get_range_slice kullanın 0,5; get_range_slice kullanın) en iyi seçeneğinizdir.

+1

Çok büyük ne kadar büyük? Http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo adresindeki sununun 41'inci slaytta, "Satır başına milyonlarca sütun" 0.5 yazıyorsunuz. Üst üste sütunlar, gerçekten büyük zaman serileri için hala yoludur? –

+0

Evet, gidilecek sütunlar. – z8000

+0

Satırlar yerine sütunları kullanmanın nedeni bölümleyicilerdir? ByteOrderedPartitioner, sıcak noktalar oluştururken, RandomPartitioner düzeni koruduğu için. Ama satır anahtarları dayalı bölümleme değil mi? Çok sayıda sütunu tek bir satırda depolarsak, aynı zamanda sıcak nokta sorununa da neden olur? –