这是我的用法:我有这样的字段:id(int)、frequency(int)、created(timestamp)。
我需要一个可以优化created字段上的范围查询的数据库。专门用于查询,如:SELECT * FROM my_table WHERE created >= val1 AND created <= val2
这个db需要处理数百万个查询,而且还需要适当地扩展。
我已经查看过Cassandra,并且了解到它不能很好地处理像这样的范围拼接查询,因为它需要查询所有分区。我想我可以简单地在created列上创建一个索引并以SQL类型db查询它,但是我不看SQL的原因是它不能很好地扩展(例如,在SQL中没有自动分片)。
请告诉我关于这个用途的任何数据库建议。谢谢!
发布于 2021-05-20 19:21:33
我将提出一个带有_no_name的ante,并告诉您,我亲自使用过Microsoft SQL Server中的多of数据库,这些数据库中有数千亿行中的单个表,没有任何形式的切分或分区设置,并且运行得很好。我甚至和微软的代表讨论过这个话题,他们声称这个系统可以将表处理成数万亿行。
具体来说,我在数百亿行的表上处理了范围查询(包括CreatedDate之类的字段),它们是有效的,并在适当的时候执行索引查找(基于谓词的基数)。在某些情况下,这些数据库运行的服务器背后的硬件就像普通的笔记本电脑一样简陋。
就任何现代数据库系统而言(不管是关系的还是非关系的),您不应该仅仅根据计划支持的数据量来选择一个。相反,您应该根据数据的类型(包括结构化的、半结构化的、非结构化的或高度可变的)以及数据的用例(例如计划进行的查询类型)来选择一个。
有了这样一个只有三列轻量级数据类型的紧凑而结构化的表,我看不出任何现代关系数据库管理系统都不能处理您的需求。正确的索引和架构将为您的性能和可伸缩性提供最长的方法,而不是您实际选择的数据库系统。
https://dba.stackexchange.com/questions/291940
复制相似问题