-1

有一个包含大约 600 万条记录的数据集。每条记录具有相同数量的字段。总共有8个字段:

ID  Title  Color  Date1  Date2  Date3  Date4...

应该有一种方法可以按标题和所有日期字段(或 RDBMS 术语中的“列”)过滤这些记录。

数据的大小不是那么大,大约几千兆字节。我们没有长文本字段等(我们在架构创建过程中去掉了它们,所以现在我们在数据集中只有非常重要的字段)。

后端读取和写入数据非常密集。我们真的很想尽可能地加快读\写(和按字段过滤)。目前我们正在使用 Postgres,我们喜欢它的可靠性,但它似乎并不是很快。是的,我们做了一些调整和优化,添加了索引,将它安装在 32GB RAM 的机器上并设置了所有必要的设置。换句话说,它有效,但我仍然相信它可能会更好。我们需要的是速度:按日期和标题过滤记录应该很快,非常快。数据插入可能会更慢。后端过滤所有未处理的记录,对其进行处理,并设置日期标志(处理时的日期时间)。每 5-10 秒执行大约 50 个后端“工作人员”,因此数据库应该能够执行得非常快。

我们那里没有连接,数据已经针对大数据解决方案进行了优化。只有一张“大桌子”。

我们希望在单个节点或许多小型实例上运行它。数据并不是很重要。但是我们想避免昂贵的解决方案,所以我们正在寻找一种 SQL 或 NoSQL 解决方案,它在同样便宜的硬件上比 Postgres 执行得更快。

我记得大约一两年前我尝试过 MongoDB。据我记得,那一刻过滤并没有那么快。Cassandra 更好,但我记得它只能执行一小部分过滤查询。Riak 很好,但仅适用于具有许多机器的大型集群。这是我非常基本的经验,如果你们知道这些解决方案之一表现出色,请写下来。或提出其他解决方案。

谢谢!

4

2 回答 2

2

我同意上面的瑞恩。坚持使用 PostgreSQL。

您还没有描述您的写入负载实际上是什么样的(您是否在这里和那里更新了一些记录,但是有很多并行查询?使用较少数量的并行查询进行更新,但一次更新了很多行等) . 所以我不能告诉你你需要做什么才能获得更快的速度。

但是,根据您的问题和您说到目前为止您已经尝试过的事情,我建议您考虑聘请顾问以全新的眼光来查看您的数据库,查看您的环境等并提出改进建议。我的猜测是,你有很多事情要做,可以进行相当多的优化,与切换到新环境相比,你在这些优化上的花费要少得多。

于 2013-11-04T11:38:42.480 回答
1

我同意丹尼斯的观点,你应该坚持使用 Postgres。根据我的经验,正确调整关系数据库会产生令人难以置信的快速结果。或者换一种说法……我发现调整 Mongo 以在 10 毫秒或更短的时间内返回复杂查询比调整 SQL Server 和 MySQL 要困难得多。

阅读此网站http://use-the-index-luke.com/了解如何进一步调整。这家伙还写了一本可能对你有用的书。

正如 Denis 所说,数据量并没有那么大,以至于从零开始使用 NoSQL 解决方案是值得的。

于 2013-11-01T15:58:18.963 回答