2016-03-22 38 views
1

ile birleştirmenin en iyi yolu nedir? DSE documentation'a göre DSE Search, sayaç sütunlarını desteklemez.Cassandra sayaçlarını ve Solr dizinlerini DSE

Temel bir CF'im var (ckey, count), burada count sayaçtır. Bir karşı olan, olduğundan

create table change_count (ckey text, count counter) primary key (ckey) 

Doğal olarak dsetool create_core ks.change_count, bu CF başarısız "Solr indeksleri sayaçları desteklenmez!" hata.

Tamam, bu yüzden elle Solr şema dokümanı oluşturmak: "Solr indeksleri sayaçları desteklenmez"

<?xml version="1.0" encoding="UTF-8"?> 
<schema name="autoSolrSchema" version="1.5"> 
    <types> 
     <fieldType class="org.apache.solr.schema.StrField" name="StrField" /> 
    </types> 
    <fields> 
     <field indexed="true" multiValued="false" name="ckey" stored="true" type="StrField" /> 
    </fields> 
    <uniqueKey>(ckey)</uniqueKey> 
</schema> 

, bir dosyaya kaydedin ve dsetool create_core ks.change_count schema=/tmp/1.xml kullanmak, ama hala aynı olsun hata.

Yani, ilk soru - DSE strongarm bir sayaç var ve sayaç olmayan sütunlar üzerinde bir sayaç ve solr indeksleri var.

Bu mümkün değilse, verileri temsil etme sorununu nasıl çözeceğiniz konusunda herhangi bir öneri almak istiyorum. 'Ckey', 'epoch hour' diyelim ve sayım, o saatte meydana gelen bazı olayların sadece bir karşıtıdır. Atomik artışlar için sayaç tipi, hafif işlemlerde kullanmama rağmen bu CF'deki çekişme çok yüksek olacaktır. Solr dizini orada çünkü menzil aramalarını yapmak istiyorum ve böyle devam ediyor. Sonra Solr endeksi change_count_idx ancak change_count tabloda güvenebilirsiniz

create table change_count (ckey text, count counter) primary key (ckey) 
create table change_count_idx (ckey text) primary key (ckey) 

ben hem de aynı tuşları var emin olarak:

Ben 2 CFS oluşturabilir. Ardından, anahtarları Solr kullanarak ve Cassandra'yı kullanarak gerçek verileri kullanarak, istemci tarafı birleştirme işlemini gerçekleştirebilirim. Ancak bu, potansiyel olarak binlerce PK arayışı olabilir ve performansın geniş aralıklarda kalacağını düşünmüyorum.

+0

Sayaç sütunlarına sahip bir tabloda, tüm * sayaç olmayan * sütunlar birincil anahtarın parçası olmalıdır. –

+0

Bu, sorunuza bir çözüm seviyesinde bir cevap olması anlamına gelmez, bu yüzden buraya taşıdım. Sadece okuyucular için bir hatırlatma. DSE'deki denetim, tablonun meta verilerine aykırıdır ve yalnızca birincil anahtarı dizine eklemek istemediğinizi varsayar. –

+0

@CalebRackliffe Ancak birincil anahtarımı dizine eklemek ve aksi halde Cassandra'da desteklenmeyen çılgın sorgular yapmak için Solr'u kullanmak isteyebilirim. Bu özel tablonun arkasındaki fikir budur. –

cevap

0

Tanımladığınız şey, DSE Arama ile kesinlikle mümkün değil.

O kırılgan olabilir, ama aslında bu sayaçları aramak istiyorsanız, counter yerine bigint kullanan change_count bir "ayna" versiyonunu oluşturmayı düşünün isteyebilirsiniz. Ardından, verileri "yansıtma" tablosuna periyodik olarak change_count'dan okuyabilir ve doğrudan buna karşı sorgulayabilirsiniz.