我们正在尝试构建一个必须存储数十亿条记录的应用程序。 1万亿+
单个记录将包含有关文本文档的文本数据和元数据。
pl帮助我了解存储限制。数据库SQL或oracle可以支持这么多数据,还是我必须寻找其他一些基于文件系统的解决方案?我有什么选择?
由于中央服务器必须处理来自许多客户端的传入负载,因此并行插入和搜索规模如何?如何在多个数据库或表上分发数据?对于这种规模化的环境,我对数据库细节不太满意。
最初填充数据库的插入负载会很高,随着数据库的增长,搜索负载会增加,插入会减少。
数据的总大小将超过1000 TB。
感谢。
答案 0 :(得分:2)
根据SQL Server limitations上的MSDN页面,它可以在一个数据库中容纳524,272太字节 - 尽管每个文件只能容纳16TB,因此对于1000TB,您需要实现partitioning 。如果文件本身很大,并且只是被视为二进制blob,你可能还需要查看FILESTREAM,它实际上将文件保存在文件系统上,但维护SQL Server的概念,例如Transactions ,备份等
以上所有内容均适用于SQL Server。其他产品(如Oracle)应提供类似的功能,但我无法列出它们。
答案 1 :(得分:2)
1万亿+
单个记录将包含文本数据 和关于文本文档的元数据。
帮我理解一下 存储限制
我希望您的硬件预算有限。这与“数百万”一样大。
一万亿个文档,每个文档的总存储空间为1024字节(当你说文本时非常不可能是现实的),大小约为950太字节数据。存储限制意味着您在这里谈论高端SAN。使用450个光盘的2tb光盘的非冗余设置。做数学。添加冗余/ raid并与您讨论主要的硬件投资。这假设每个文档只有1kb。如果您平均使用16千克数据,则为... 7200 2tb光盘。
这是一个硬件问题。 SQL Server的扩展规模不高,无论如何都无法在单个系统中实现。像这样的docuemnt商店的常规方法是集群存储系统(集群或某种方式分布式文件系统)以及关键字/标记的中央数据库。取决于加载/插入可能与用于分布式搜索的hte数据库的重新定位。
无论它是什么,存储/备份需求都非常棒。 Lagre项目在这里,预算很大。
IO负载是另一个问题 - 硬件明智。您将需要一台大型机器并获得一大笔IO带宽。我已经看到在SQL Server上重载的8gb链接(由HP eva提供190张光盘)我可以想象你会运行类似的东西。无论价格如何,您都会希望硬件具有尽可能多的技术,除非您将blob存储在外面。
SQL行压缩可能非常方便。全文搜索将是一个问题。
数据的总大小将超过1000 TB。
没有。认真。我想,这将是一个更大的。 1000tb会假设文件很小 - 就像旅行机票的XML形式一样。
答案 2 :(得分:2)
在SQL Server空间中,您可能需要查看专为100s TB / Petabyte应用程序设计的SQL Server Parallel Data Warehouse。 Teradata,Oracle Exadata,Greenplum等也应该在您的名单上。在任何情况下,您都需要一些专家帮助才能选择和设计解决方案,因此您应该向该人询问您在此处提出的问题。
答案 3 :(得分:0)
说到数据库,它非常棘手,可以使用多个组件来获得Redis Cache,Sharding,Read replicas等性能。 Bellow post描述了简化的DB可伸缩性。
http://www.cloudometry.in/2015/09/relational-database-scalability-options.html