2017-10-15 7 views
1

J'utilise Ignite v2.1 et dbeaver pour interroger les caches. Est-il possible d'interroger des collections dans un objet dans le cache ou un objet complexe dans un objet dans le cache? Et si oui, quelle est la syntaxe? Par exemple, si j'ai un cache tel que IgniteCache et Person ressemblait à ce qui suit, quelle serait la syntaxe pour 1) sélectionner l'adresse et 2) sélectionner les noms des frères et soeurs & adresses?Ignite requête outil SQL pour les collections dans l'objet

class Person { 
    String name; 
    Addresss address; 
    Collection<Person> siblings; 
} 

Répondre

0

Vous devrez déclarer QueryEntity pour cette cache, avec la liste des champs et des index sur ce cache, vous pouvez utiliser ses champs dans des requêtes SQL. La configuration des annotations est expliquée dans le même document, choisissez celle qui vous convient le mieux.

Alors le 1) sera probablement quelque chose comme SELECT ADDRESS FROM PERSONCACHE.PERSON WHERE NAME = ?.

Les clés étrangères ne sont pas supportées, cependant, et je ne pense pas que la configuration siblings fonctionnera. Cela ne fonctionne pas comme cela pour les bases de données relationnelles sauf si vous ajoutez des tables de jointure. Ignite n'est pas une base de données graphique.

1

Il n'est pas possible de faire du SQL sur des collections imbriquées dans Ignite: la norme SQL ne prend pas en charge de telles choses. Les tables SQL sont plates.

bases de données SQL Think régulières: vous devez introduire Person.id et Person.parentId (pour un à plusieurs), ou une table de correspondance séparée (pour un grand nombre à plusieurs), puis utilisez SQL JOIN pour interroger les frères et sœurs.