在大容量交易系统上使用 Gemfire

Using Gemfire on high volume transaction system

我想知道是否有任何好的资源可以就使用 gemfire 作为主数据库的高事务(2000 TPS)和容量系统(数百万条记录)的最佳实践向我提供建议。

我问这个是因为我收到的信息是跳过使用 "LIKE" 的查询或任何其他不是 Gemfire 上的密钥获取的搜索,并尝试直接在 Java 上使用该区域尽可能使用内存(如果 JVM 可以处理数据的大小)。使 Gemfire 几乎成为一个巨大的 HashMap,除了 Map.get().

之外没有任何功能

以上论点有依据吗?

Gemfire 集群不是每天在世界各地每秒处理数以万计的事务吗?

谢谢

所以,我不知道每天有 "zillions" 笔交易 :-),但客户肯定使用 GemFire 每天处理数百万笔交易并存储数十亿条记录(对象)。

您可以在 Pivotal 的网站 (https://pivotal.io/big-data/pivotal-gemfire) 上查看案例研究(中国铁路、印度铁路和 Newedge)了解更多详细信息。

虽然通过键索引执行直接查找通常总是更好(即使在 OQL 语句中,不一定使用 Map.get(key)),但在中使用 LIKE 运算符并非不可能存在索引的 OQL 谓词 (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 (?) 和功能要求向您提供建议。

这绝对不是真的。我们有许多客户使用 OQL 和产品的其他高级功能来处理数千个并发 clients/queries。

如果不使用对象大小、查询和索引,很难给出任何具体建议。在某些情况下使用 QueryService(从客户端触发查询)是有意义的,而在其他情况下最好使用数据感知函数以便更好地分配查询执行。

查看 Querying Partitioned Region and look specifically at Optimizing Queries on Data Partitioned by a Key or Field Value 以获得一些示例和想法。

希望对您有所帮助

我参与过几个使用 GemFire 的项目,是的,它可以用来查询大量数据。正如 William 和 John 所说,这实际上归结为您的 GemFire 集群是如何设计来处理您的数据的,例如分区、复制等。恕我直言,您应该尽可能避免使用索引,而是使用 GemFire 集群作为数据网格。使用此功能,您可以在集群中并行查询 运行,从而提高速度和灵活性。看看Geode Function best practices