2016-04-05 11 views
1

Ignıte'da yeni başlayan biriyim. Sorgulama sürelerini ölçmek için örnek bir uygulama yapıyorum.Harita nesnesi sorgusu gereğinden fazla tutuşma

Bu nedenle önbellekteki anahtar String'dir, değer Harita'dır. değer Harita alanın biri sorgu gibidir böylece "order_item_subtotal" dir:

select * from Map where order_item_subtotal>400 

Ve örnek kod:

Ignite ignite= Ignition.ignite(); 
IgniteCache<String, Map<String, Object>> dummyCache= ignite.getOrCreateCache(cfg); 
Map<String,Map<String, Object>> bufferMap=new HashMap<String,Map<String, Object>>(); 

int i=0; 
for (String jsonStr : jsonStrs) { 
    if(i%1000==0){ 
     dummyCache.putAll(bufferMap); 
     bufferMap.clear(); 
    } 
    Map data=mapper.readValue(jsonStr, Map.class); 
    bufferMap.put(data.get("order_item_id").toString(), data); 
    i++; 
} 

SqlFieldsQuery asd=new SqlFieldsQuery("select * from Map where order_item_subtotal>400"); 

List<List<?>> result= dummyCache.query(asd).getAll(); 

Ama sonuç hep "[]", boş demektir. Ve hiçbir hata veya istisna yoktur.

Burada nelerin eksik? herhangi bir fikir?

PS:

{order_item_id=99, order_item_order_id=37, order_item_product_id=365, order_item_quantity=1, order_item_subtotal=59.9900016784668, order_item_product_price=59.9900016784668, product_id=365, product_category_id=17, product_name=Perfect Fitness Perfect Rip Deck, product_description=, product_price=59.9900016784668, product_image=http://images.acmesports.sports/Perfect+Fitness+Perfect+Rip+Deck} 

cevap

2

aşağıdaki örnek verileri Bu desteklenmez. Çalışmak için bir harita yerine basit bir POJO sınıfı kullanmalısınız.

Ignite'ın verileri ikili biçimde depolayacağını ve sorguları çalıştırırken nesnelerin seri hale getirilmeyeceğini unutmayın. Yani hala sunucu düğümünde sınıf tanımlarını dağıtmanıza gerek yok. Daha fazla bilgi için lütfen bu sayfaya bakınız: https://apacheignite.readme.io/docs/binary-marshaller

+0

Şunlar gibi: (Benimki gibi durumlar, çalışma zamanında veri yapılarını genişletmeye ve genişleyen verileri sorgulama yeteneğine sahip olmamak kesinlikle düzeltilmesi gereken bir sorundur.) Thx – Neron

+0

@Neron Eğer ikili format kullanılıyorsa şemayı dinamik olarak değiştirebilirsiniz (varsayılan değer): https://apacheignite.readme.io/docs/binary-marshaller 'BinaryObjectBuilder' kullanabilirsiniz ve herhangi bir sınıf tanımlaması yoktur. Tek geçerli sınırlama, SQL şemasının hala statik olmasıdır, yani eğer bir alan eklerseniz, onu bir sorguda kullanamaz veya dizine ekleyemezsiniz. Bu, sonraki sürümlerde ele alınacaktır. –

+0

Açıklama için teşekkürler. Bu noktada da oldu :) Bu aynı zamanda sorgulamaya çalıştığımızda, polimorfizme karşı duyarsız olarak depolama yapar – Neron