我一直在检查GridGain一段时间,并且遇到了一些关于GridGain SQL功能的功能,这引出了一些问题(我无法在文档中找到确切的答案)
从示例中,始终存在显式数据模型。我正在使用Java,这意味着总是要查询的模型的类定义。 API文档中的示例:http://atlassian.gridgain.com/wiki/display/GG60/SQL,+Scan,+And+Full+Text+Queries首先展示了如何对属性进行注释,这表明总是需要一个显式模型。可以为SQL查询注释模型的属性,例如" @ GridCacheQuerySqlField"。 是否总是需要显式数据模型?理想情况下,我想要一种不必明确说明模型的方法,因为我的用例确实经常更改并且具有复杂的关系。
通过GridGain的SQL API可以执行哪些SQL查询子集?我的用例通常需要非常复杂的查询。例如,在docs(与上面相同的链接)中,它指出" Continuous Queries不能与SQL一起使用。仅支持基于谓词的查询。" 我在哪里可以找到支持的SQL子集(并且在条件下,因为提供的示例不会执行连续的SQL查询,除非查询是基于谓词的条件是满足)
提前感谢您的见解
答案 0 :(得分:0)
GridGain支持企业版中的非固定数据模型,即便携式对象。可移植对象允许您将数据模型呈现为类似于地图的嵌套结构,该结构允许跨不同语言(Java,C#,.NET)进行动态结构更改,索引和可移植性。您可以在GridGain企业版示例中查看可移植对象,并在此处阅读文档:http://entdoc.gridgain.org/latest/Portable+Cross+Platform+Objects在开源版本中,始终需要显式类定义。
GridCacheQuery javadoc中描述了SQL限制:http://gridgain.com/sdk/6.5.0/javadoc/org/gridgain/grid/cache/query/GridCacheQuery.html
Group by
和sort by
语句分别应用于每个节点,因此在将多个远程节点的结果组合在一起后,结果集可能会被错误地分组或排序。
诸如sum
,max
,avg
等聚合函数也应用于每个节点。因此,您将获得包含聚合值的多个结果,每个节点一个。
仅当连接对象以并置模式存储或者连接的至少一侧存储在REPLICATED
缓存中时,连接才能正常工作。