Ich bin ein Anfänger bei Ignite. Ich mache eine Beispiel-App, um die Abfragezeiten zu messen.Map Objekt Abfrage über zünden
Also der Schlüssel im Cache ist String, Wert ist Map. Ein des Feldes im Wert Karte ist „order_item_subtotal“ so die Abfrage wie ist:
select * from Map where order_item_subtotal>400
Und der Beispielcode ist:
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();
Aber das Ergebnis ist immer „[]“ bedeutet leer. Und es gibt keinen Fehler oder Ausnahmen.
Was fehlt mir hier? irgendwelche Ideen?
PS: Beispieldaten unter
{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}
Scheint so :(Fälle wie meine, benötigen die Erweiterung von Datenstrukturen in der Laufzeit und fehlende Fähigkeit, expandierende Daten abzufragen, ist definitiv ein Problem, das behoben werden muss. Thx – Neron
@Neron Sie können das Schema dynamisch ändern, wenn das Binärformat verwendet wird (das ist das Standardformat): https://apacheignite.readme.io/docs/binary-marshaller Sie können sogar 'BinaryObjectBuilder' verwenden und haben keine Klassendefinitionen Die einzige aktuelle Einschränkung ist, dass das SQL-Schema immer noch statisch ist, dh wenn Sie ein Feld hinzufügen, können Sie es nicht in einer Abfrage verwenden oder es indizieren. Dies wird in zukünftigen Releases behoben. –
Danke für die Erklärung, I war zu diesem Zeitpunkt auch :) das macht Speicher auch unempfindlich gegen Polymorphie, wenn wir versuchen, es abzufragen – Neron