为主要读取应用程序寻找数据库解决方案,查询 3 亿条记录

Looking for a database solution for mostly read application, querying 300 million records

正在寻找合适的数据库技术来高效查询 3 亿条记录表。表可能包含 5-30 列,主要是 tinyint + zip、state。用户可以在许多列上使用 where 条件发出任意查询,并按州或 zip 对计数进行分组。从某种意义上说,数据集是静态的,数据会定期重新加载,没有插入,只有读取。

我已经用 InnoDB 尝试过 Mysql (RDS)。由于大量的记录和查询的性质,我无法获得令人满意的性能。

尝试过 MonetDB(列式存储)并取得了很好的结果,但它似乎并没有被很多人使用,这引起了一些担忧。

要求响应时间足够快,以便响应式 Web UI 进行分析。

我还应该探索哪些其他技术?

看看 Google App Engine 的 Datastore。他们使用索引自动优化您的查询以实现快速响应,而且 Google,因此他们可以轻松地从零流量扩展到数十亿次点击。

可以使用您自己或他们的框架以 Java 或 Python 编写应用程序。

试试卡桑德拉。它现在被广泛使用(Facebook、Netflix 和许多其他公司)。

如果你想让你的代码相对底层数据库技术抽象,你可以使用 kundera JPA 2.0。

此外,在本地使用 Cassandra 非常容易(用于调试和单元测试)。就拿这个 class.

我鼓励您尝试 MonetDB,这取决于您的查询,但一般来说 - 作为列存储,您应该获得良好的性能(甚至超过 3 亿条记录)。另外,您不需要手动创建索引等——它主要是自我优化的。 MonetDB 还有一个 Node.js driver/connector, which may be used for writing quick analytical web apps. There are also connectors for popular languages/frameworks:Ruby、Python、Perl、PHP、Java(通过 JDBC)。

别担心,MonetDB 正在积极开发中(免责声明:我实际上是一名开发人员),您可以在用户邮件列表上相对快速地获得答案。