我们正在寻找可以支持索引的内存数据库中的开源。
用例是我们有很多项目将大幅增长。每个项目都有一些我们需要查询的字段。目前我们将数据存储在应用程序的内存中。然而,随着数据的增加,我们必须考虑分发/分片数据库。
我们已经研究了几个选项
可以使用Redis 集群,但它没有索引或类似 SQL 的查询的概念。
Apache Ignite既是内存中的,又是分布式的,并提供 SQL 查询。但是,问题是 ignite 会将所有查询触发到所有主节点,因此最终结果将比那些查询中最慢的查询慢。这似乎是一个问题,因为许多节点中的一个非执行/慢速节点确实会大大降低应用程序的速度。此外,在 ignite 中,读取是从 master 完成的,而 slave 不使用,因此很难扩展查询。增加节点会产生负面影响,因为查询数量会增加,而且速度会更慢。
- Cassandra - 可以使用 cassandra 中的 in-memory 选项,但似乎每个节点的表的最大大小可以是 1 GB。如果我们的表超过 1 GB,我们将不得不求助于分区,这将导致 cassandra 进行多个查询(每个节点一个),这是一个问题(与 ignite 相同)。不确定是否可以通过增加从属设备的数量来扩展 cassandra 内存表中的读取。
我们对其他解决方案持开放态度,但想知道多查询是否会成为无处不在的问题(如 hazelcast)。
我们用例的理想解决方案是一个内存数据库,其索引可以通过增加从属设备的数量来扩展读取。使其分布式/分片将导致多个查询,我们不情愿,因为一个错误的节点可能会减慢整个系统的速度。