我正在使用 Ignite v2.1 和 dbeaver 来查询缓存。是否可以查询缓存中对象内的集合,或缓存中对象内的复杂对象?如果是这样,它的语法是什么?
例如,如果我有一个像 IgniteCache 和 Person 的缓存,如下所示,那么 1) 选择地址和 2) 选择兄弟名称和地址的语法是什么?
class Person {
String name;
Addresss address;
Collection<Person> siblings;
}
在 Ignite 中不可能对嵌套集合执行 SQL:SQL 标准不支持这样的事情。SQL 表是扁平的。
想想常规的 SQL 数据库:需要引入Person.id
和Person.parentId
(对于一对多),或者单独的映射表(对于多对多),然后使用 SQLJOIN
查询兄弟。
您必须为此缓存声明QueryEntity,并在此缓存中包含字段和索引列表,然后您可以在 SQL 查询中使用其字段。注释驱动的设置在同一个文档中进行了解释,选择一个更适合您的。
那么 1) 可能类似于SELECT ADDRESS FROM PERSONCACHE.PERSON WHERE NAME = ?
.
但是,不支持外键,我认为该siblings
设置不会起作用。除非您添加连接表,否则它不适用于关系数据库。Ignite 不是图形数据库。