[英]Which DB should I use?
我现在正在构建一个应该存储和处理大量数据的应用程序。 所以现在我正在努力解决这个问题 - 我应该使用哪个DB。
我的要求是:
你建议我使用哪个DB?
谢谢!
更新:我使用的操作系统不是Windows。 我认为如果SQL Server是最推荐的数据库,那么我可能会从您的响应切换,但事实并非如此。
关于预算 - 我将从最便宜的选项开始,我想一旦公司有更多的钱和更多的用户,这将改变。
没有人推荐过no-sql数据库。 他们真的对这种要求不好吗?
答案取决于提出其他问题,例如您想花多少钱,您正在使用什么操作系统以及您在内部拥有哪些专业知识。
我所知道的可以处理如此大规模的数据库包括:DB2,Oracle,Teradata和SQL Server。 MySQL也可能是一个选项,但我不确定它的性能。
我敢肯定,还有其他一些设计用于处理您建议的大规模数据,您可能还需要查看这些数据。
因此,如果您的操作系统不是Windows,则可以排除SQL Server。
如果你的便宜,MySQL可能是你的选择。
DB2和Oracle都是成熟的数据库系统。 如果您的系统是大型机(IBM 370),我建议使用DB2,但对于基于Unix的系统可能是一种选择。
我对Teradata了解不多,但我知道它是专为大量数据而设计的,因此可能更贴近您所寻找的内容。
可以在此处找到更完整的选择列表: http : //en.wikipedia.org/wiki/List_of_relational_database_management_systems
这里有一个体面的数据库比较: http : //en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
每秒100000+次插入是一个巨大的数字,无论你选择什么,你都在寻找在硬件上花大钱来处理这个问题。
这不是关于选择什么数据库的问题,而是关于您的技能和经验的问题。
如果您认为使用一台物理机器是可行的 - 那么您就错了。 如果您知道应该使用多台机器 - 那么为什么要询问DB? 数据库并不像您使用它那样重要。
从一台服务器上的只写DB开始,现在垂直扩展。 使用几个只读服务器并水平扩展(这里几乎可以安全地选择文档数据库)。 CQRS概念可以询问您即将提出的问题。
“每秒处理多达~100,000个插入命令” - 这是高峰还是正常操作? 如果正常运行,你的“存储的数百万条记录”很可能是数十亿......
对于这样的问题,我认为进一步理解业务“问题”是有用的 - 因为这些都是非平凡的要求! 问题在于这个问题是否证明了这种“蛮力”方法,或者是否有其他方法可以实现同样的目标。
如果需要,那么您可以考虑是否存在聚合/转换数据的方法(批量加载数据/将多个更新丢弃到同一记录/加载到多个数据库,然后将下游聚合为ETL的组合)它更容易管理这个卷。
我要担心的第一件事是你的磁盘布局,你有一个混合工作负载(OLTP和OLAP),所以如果你的IO子系统可以',为了实现这个吞吐量,你的磁盘大小和放置正确是非常重要的'处理负载然后无论你将使用什么数据库都无关紧要
另外,也许那些100,000次插入每秒可以批量加载,在12小时内每秒100,000行等于72,000,000行所以你可能想存储数十亿行?
您可能无法每秒处理100k个单独的插入操作,您肯定需要将它们批处理为更可管理的数字。
无论如何,单个线程无法执行那么多命令,所以我希望有100-1000个线程来执行这些插入。
根据您的应用程序,您可能还需要某种高可用性。 除非你做的事情像科学的应用程序。
我的建议是雇用一个对你有可靠答案的人 - 最好是之前做过的人 - 如果你不知道,你将无法开发应用程序。 聘请能够回答这个问题的高级开发人员。 如果你愿意,可以在面试中询问他们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.