【问题标题】:Using Gemfire on high volume transaction system在大容量交易系统上使用 Gemfire
【发布时间】:2015-06-26 13:24:43
【问题描述】:

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

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

上面的论点有依据吗?

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

谢谢

【问题讨论】:

    标签: gemfire spring-data-gemfire


    【解决方案1】:

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

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

    虽然通过键索引执行直接查找通常总是更好(即使在 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 (?) 和功能要求向您提供建议。

    【讨论】:

    • 感谢您提供的链接,我会检查它们,看看是否可以在这里运行一些测试,因为我只是觉得我们对 Gemfire 的使用持谨慎态度。
    【解决方案2】:

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

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

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

    希望有帮助

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-11-07
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多