繁体   English   中英

存储大量分析数据

[英]Storing a large amount of analytical data

我通常使用SQL Server和C#来处理我所做的所有项目,但是我正在研究一个可能跨越数十亿行数据的项目,我觉得在SQL Server中这样做并不舒服。

我将要存储的数据是

  • 约会时间
  • IP地址
  • LINKID
  • 可能是其他字符串相关数据

我之前只处理过关系数据库,因此正在寻找关于哪种数据库技术最适合这种类型的数据存储的一些指导。 可以扩展并以低成本执行此操作(与分片SQL Server相比)

然后我需要根据linkId提取这些数据。

我也可以在查询中对数据库进行排序,还是最好在应用程序中完成?

编辑:它将基于云。 因此,我正在研究SQL Azure,我已广泛使用它,但它只是在行数增加时才开始引发问题。

由于您正在寻找一般性指导,我觉得可以提供您过早被解雇的答案;-)。 Microsoft SQL Server绝对可以处理这种情况(通常意义上有这些字段和数十亿行的表)。 我个人在一个有4个节点的数据仓库上工作,每个节点的主事实表都有1.2到15亿行(并且还在增长),并且对查询的响应速度很快,尽管数据模型和索引的某些方面可能有做得更好。 它是一个基于Web的应用程序,许多用户整天都在使用它(尽管一天中的某些时段比其他时段更难)。 此外,该事实表比您描述的表宽得多,除非“可能其他字符串相关数据”相当大(但也有方法正确建模)。 没错,免费的Express版本可能无法满足您的需求,但标准版可能会这样,并且它不会超级昂贵。 企业有一个很好的功能来进行在线索引重建,但仅此一点可能无法保证许可证费用的大幅增加。

请记住,对于使用此数据实际尝试完成的内容几乎没有描述,我很难说MS SQL Server肯定会满足您的需求。 但是,鉴于您似乎完全基于您可能获得的大量行来排除它,我至少可以说明这种情况:良好的数据建模,良好的索引设计和定期索引维护,MS SQL Server绝对可以处理数十亿行。 现在,它是否是您项目的最佳选择取决于您要做的事情,客户对维护的满意程度等。

祝好运 :)

编辑:

  • 当我说(上面)查询“足够快”回来时,我的意思是1到90秒,具体取决于各种因素。 请记住,这些不是简单的查询,在我看来,可以对数据建模和索引策略进行一些改进。
  • 我故意省略了表分区功能,不仅因为它仅在企业版中,而且因为它经常被误解,因此被滥用而不是理解和正确使用。 SQL Server中的表/索引分区不是 “分片”的方法。
  • 我也没有提到Column Store索引,因为它们仅在Enterprise Edition中可用。 但是,对于足以证明成本合理的项目,Column Store索引当然值得研究。 它们是在SQL Server 2012中引入的,并且带有限制,即一旦创建了Column Store索引,就无法更新表。 您可以在某种程度上使用表分区来解决这个问题,但在SQL Server 2014中,将删除限制。

鉴于这需要基于云并且您使用.Net / C#,如果您真的只是谈论几个表(到目前为止只是所述的表和隐含的“链接”表 - LinkID的来源),因此可能不需要关系或某些其他RDBMS功能,然后一个选项是使用亚马逊的DynamoDB。 DynamoDB是AWS(Amazon Web Services)的一部分,是NoSQL数据库。 开发甚至是推出项目的初始阶段,它们的低端免费等级更容易实现。 截至2013-11-04,主要的DynamoDB页面指出:

AWS免费套餐包括100MB的存储空间,5个写入容量单位和10个单位的读取容量与Amazon DynamoDB。

以下是一些文档: 概述如何使用.Net查询以及常规.Net SDK

请注意:在考虑您认为可能需要多少费用时,请确保包含相关的AWS部分,例如网络使用情况等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM