我将拥有一个包含uuids,年龄,性别,家庭收入和12个此类字段的用户的表格数据库。其中约有4千万至5千万。我需要根据年龄范围,收入范围等进行查询,并获取uuid的列表。如果连接,每行应该大约400个字符。将400字节乘以50Mil得到17 - 18 GB约。它会慢慢增长。
这将是保存此数据并执行快速查询的最佳数据库系统。 Mongo还是MySQL?还应该最好保留哪种硬件。
此外,有人可以根据经验告诉mySQL或Mongo将采取的查询时间。我需要在此基础上设计整个系统的其他组件的架构。
答案 0 :(得分:2)
我不会说40-50万条记录或17-18GB会被视为“大”。任何关系数据库都应该足够了。
任何现代服务器都足够了。 Windows,Linux - 选择您最熟悉的那个。我要说64位是必需的。添加enough RAM,您就可以将整个内容保存在内存中。
没有人可以告诉你查询时间,因为它取决于太多因素:硬件,架构,索引等。最好的办法是自己花时间看看。
我认为你最大的问题是按范围查询。这听起来不像事务数据库,更像是数据挖掘仓库。也许具有时间,位置,收入等维度的星型模式将更适合您尝试的操作。
答案 1 :(得分:0)
没有理由将所有信息存储在单个表中,尤其是那些包含许多行的表。对于这么大的项目,我强烈建议学习关系数据库的工作方式以及索引的工作原理。你要实现这个的方式,在你投入的任何数据库或硬件上都会变慢。如果您将其设计为关系数据库,使用几个单独的表来存储内容并使用外键来访问其他表,那么您将大大提高性能。
This is very dry,但必不可少。你应该真的尝试很好地理解它。
此外,您应该阅读indexing。每个数据库都略有不同,因此您实现它的方式取决于您选择的数据库。
我的意思是你会大大提高你的表现。我已经看到并重新设计了耗时15到20分钟的查询,通过关系数据库设计,索引和最佳查询设计对它们进行了优化,并将它们降低到毫秒级。