目标:扩展将PostgreSQL用作数据存储的现有应用程序。
Apache Ignite如何提供帮助:我们有一个应用程序,它有许多模块,所有模块都在使用一些共享表。所以我们只有一个PostgreSQL主数据库,它已经在AWS大型SSD机器上。我们已经有Redis用于缓存,但由于我们没有限制Redis,因此不容易部分更新和查询二级索引。
我们的用例: 我们有两个大表,一个是成员,第二个是订阅。它是多对多的关系,其中一个成员在多个组中订阅,我们在订阅表中维护订阅。 会员表大小约为4000万,此表的大小约为40M x 1.5KB +更多〜= 60GB
挑战
一个挑战是,我们无法归档这些数据,因为每个成员都在工作,并且经常更新并阅读此表。
我的想法:
根据我从文档中读到的内容,Apache Ignite可以帮助在PostgreSQL表之上提供缓存层。
现在,我从实施的角度提出了几个问题 图。
非常感谢快速回答,并提前致谢。
答案 0 :(得分:1)
是的,它应该适合你的情况。
Apache Ignite具有持久性,这意味着它可以选择将数据存储在磁盘上,但如果您将其用于缓存,则只会将所有内容存储在RAM中。
有两种方法。您可以在Apache Ignite上进行更新(将它们传播到PostgreSQL),或者您可以对PostgreSQL进行更新,并让Apache Ignite在第一次使用时获取它们(从PostgreSQL中提取)。后者仅适用于您可以想象的新记录。没有支持将数据从PostgreSQL传播到Apache Ignite,我猜你可以通过使用触发器来做类似的事情,但它没有经过测试。
有3rd party client。我没试过。 Apache Ignite目前只有C ++ / C#/ Java的内置本机客户端,其他平台只能通过JDBC / ODBC / REST连接,只能使用一小部分功能。
有REST API,最近有所改进。
就Apache Ignite而言,120GB听起来并不可怕。
答案 1 :(得分:1)
除了alamar的回答:
您可以将数据存储在许多计算机上的内存中,因为Ignite支持按部件划分并在计算机之间分配的分区缓存。您可以设置数据并置和备份数量。
Apache Ignite中有一个有趣的内存模型,允许您快速保存磁盘上的数据。正如Ignite Developers所说,集群背后的数据库将比Ignite持久性慢,因为通信是通过外部协议进行的
在我们公司,我们拥有巨大的Ignite集群,可以在RAM中保存更多数据