1

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

我问这个是因为我收到的信息是要跳过使用“LIKE”的查询或任何其他不是 Gemfire 上的 Key fetch 的搜索,并尽可能直接在 Java 内存上使用该区域(如果 JVM 可以处理数据)。使 Gemfire 几乎是一个巨大的 HashMap,除了 Map.get() 之外没有其他功能。

上述论点有依据吗?

Gemfire 集群不是每天在全球范围内每秒处理数以万计的交易吗?

谢谢

4

3 回答 3

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 (?) 和功能要求向您提供建议。

于 2015-06-29T18:22:00.433 回答
1

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

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

查看Querying Partitioned Region并专门查看Optimizing Queries on Data Partitioned by a Key or Field Value以获得一些示例和想法。

希望有帮助

于 2015-07-02T03:03:12.277 回答
1

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

于 2015-07-13T14:37:04.697 回答