我有几百个IoT设备每分钟将数据推送到服务器上。数据是结构化的,它有以下列:
数据一旦创建,就不会更改或更新。这个数据库的主要目的是运行Analytics。
我开始使用MongoDB,但是它的性能在几十万行之后下降了。有人建议,由于我的数据是结构化的,我不需要NoSQL。我搬到了RDBMS (Postgres)。它比以前的解决方案表现得更好,但在几百万行之后,它就开始屈服了。现在有人建议,由于我不打算使用事务性数据库的任何特性,因此RDBMS并不是一个合适的解决方案。我可能需要一个分析数据库。
为了找到更好的解决方案,我做了一些研究,发现弹性搜索、Vertica、HBase等可以解决我的问题。也许还有很多其他的解决方案,而我对其中任何一种都没有经验。
我的问题是,我该怎么做?学习,实验,重复循环对我来说似乎太长了。
发布于 2018-06-18 22:07:29
有人建议,由于我的数据是结构化的,我不需要NoSQL。我搬到了RDBMS (Postgres)。它比以前的解决方案表现得更好,但在几百万行之后,它就开始屈服了。
怎么弄到膝盖了?您可以轻松地索引数十亿行,通过BRIN索引。将开始时间和结束时间合并到一个tsrange中,并在桌面和范围上进行集群。
CREATE TABLE foo (
id int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
startts tsrange
);
CREATE INDEX ON foo USING brin (id,startts);我会经常考虑在id上进行集群,直到您的工作负载不允许这样做为止,但是在几百万行上,在遇到真正的规模问题之前,您还有很长的路要走。
https://dba.stackexchange.com/questions/209957
复制相似问题