2

我将开始一个新项目。我需要在 .NET 应用程序中处理数百个数据。现在要提供有关该项目的更多详细信息还为时过早。一些概述如下:

  1. 在同一张表上进行大量写入和读取,非常实时
  2. 扩展非常重要,因为客户端非常频繁地坚持扩展数据库服务器,因此,应用程序服务器也是如此
  3. 可以预见,可以实现在聚合查询方面的大量使用
  4. 每行数据可能包含很多要处理的属性

我建议/有以下作为解决方案:

  1. 使用分布式哈希表类型的持久性(不是 S3,而是内部的)
  2. 对跨节点的任何分析过程使用 Hadoop/Hive likes(.NET 中的任何替代品?)
  3. ASP.NET/Silverlight 中的 Impelement GUI(有很多 ajaxification,只要需要)

你们有什么感想?我在这里有意义吗?

4

5 回答 5

2

您的目标是性能、可维护性、提高成功几率还是前沿?

不要过早放弃关系数据库。使用 100 美元的外部硬盘驱动器和示例数据生成器(RedGate 的很好),您可以很容易地模拟这种工作负载。

在非关系型和云数据库上模拟该工作负载,您可能正在编写自己的工具。

于 2009-07-31T11:33:25.107 回答
2

“可以预见,在聚合查询方面可以实现大量使用”

这是数据仓库的标志。

这是 DW 处理的技巧。

  1. 数据是平坦的。事实和维度。最小的结构,因为它主要是加载而不是更新。

  2. 要进行聚合,每个查询都必须是简单的SELECT SUM() or COUNT() FROM fact JOIN dimension GROUP BY dimension attribute. 如果您正确地执行此操作,以便每个查询都具有这种形式,那么性能会非常非常好。

  3. 数据可以存储在平面文件中,直到您想要聚合。然后,您加载人们实际打算使用的数据,并从主数据集中创建一个“数据集市”。

没有什么比简单的平面文件更快的了。您不需要任何复杂性来处理(根据需要)加载到 RDBMS 数据集市以进行聚合和报告的 TB 级平面文件。

使用 RDBMS 的工具可以非常快速地批量加载简单维度和事实表。

您可以使用超高速平面文件处理轻松地预先分配所有 PK 和 FK。这使得批量加载变得更加简单。

获取 Ralph Kimball 的数据仓库工具包书籍。

于 2009-07-31T11:41:58.787 回答
1

现代数据库可以很好地处理千兆字节。当您进入 TB 和 PB 时,RDBMS 往往会崩溃。如果您预见到这种负载,那么医生可能会订购 HBase 或 Cassandra 之类的东西。如果没有,请花一些时间调整您的数据库,插入缓存层(memached)等。

于 2009-08-02T20:25:59.333 回答
0

“在同一张表上进行大量读取和写入,非常实时” - 完整性重要吗?其中一些写入是事务性的吗?如果是这样,请坚持使用 RDBMS。

扩展可能很棘手,但这并不意味着您必须使用云计算的东西。DBMS 中的复制通常会与 Web 应用程序集群、负载平衡器等一起发挥作用。

于 2009-07-31T18:55:50.447 回答
0

赋予 RDBMS 保持完整性的责任。并将此项目视为数据仓库。保持一切清洁,您不需要使用很多第三方工具:改用 RDBMS 工具。我的意思是,使用 RDBMS 拥有的所有工具,并编写一个 GUI,使用精心设计的物理数据模型(索引、分区等)的编写良好的存储过程从 Db 中提取所有数据。

Teradata 可以处理大量数据并且具有可扩展性。

于 2011-04-04T17:25:17.230 回答