我想知道是否有任何好的资源可以建议我使用gemfire作为主要数据库的高交易(2000 TPS)和音量系统(数百万和数百万条记录)的最佳实践。
我问这是因为我收到的信息是跳过使用“LIKE”的查询或任何其他不是Gemfire上的Key fetch的搜索,并尝试尽可能直接在Java内存上使用该区域(如果JVM可以处理数据的大小)。使Gemfire几乎成为一个巨大的HashMap,除了Map.get()之外没有任何功能。
上述论点有什么依据吗?
Gemfire集群是不是每天都在处理全球每秒数以万亿的交易?
由于
答案 0 :(得分:2)
所以,我不知道每天交易的“数以万计”:-),但当然客户使用GemFire每天处理数百万笔交易并存储数十亿或记录(对象)。
您可以在Pivotal的网站(https://pivotal.io/big-data/pivotal-gemfire)上查看案例研究(中国铁路,印度铁路和Newedge),了解更多详情。
虽然通过Key索引执行直接查找通常总是更好(尽管在OQL语句中并且不一定使用Map.get(key)),但在OQL谓词中使用LIKE运算符并非不可能。存在索引(http://gemfire.docs.pivotal.io/latest/userguide/index.html#developing/query_select/the_where_clause.html#the_where_clause__section_D91E0B06FFF6431490CC0BFA369425AD)。
要记住的重要一点是,索引会产生维护和存储在内存中的成本,因此正确使用它们非常重要。有关索引的更多提示,请参阅此处...(http://gemfire.docs.pivotal.io/latest/userguide/index.html#developing/query_index/indexing_guidelines.html)。
关于最佳实践,我们的EA团队最好能够就您的特定UC(?)和功能要求向您提供建议。
答案 1 :(得分:1)
这绝对不是真的。我们有许多客户使用OQL和该产品的其他高级功能来处理数以千计的并发客户端/查询。
如果没有使用对象大小,查询和索引,很难给出任何具体的建议。在某些情况下,使用QueryService(从客户端触发查询)是有意义的,而在其他情况下,使用数据感知函数可以更好地分配查询执行。
请查看Querying Partitioned Region,并专门查看Optimizing Queries on Data Partitioned by a Key or Field Value的一些示例和想法。
希望有所帮助
答案 2 :(得分:1)
我参与了一些使用GemFire的项目,是的,它可用于查询大量数据。正如威廉和约翰所说,它实际上归结为你的GemFire集群如何设计用于分区,复制等数据。恕我直言,你应该尽可能避免索引,并使用GemFire集群作为数据网格。借助此功能,您可以在群集中并行运行查询,从而提高速度和灵活性。看看Geode Function best practices