2010-01-22 51 views
4

我需要处理几个数据样本,说,N。样本代表相似的数据,但来自不同的来源。例如,不同商店的订单历史。所以所有样本的结构都是一样的。与数据操作我有几个可能性:什么是更好的:有许多相似的数据库或一个数据库与相似的表或一个数据库与一个表?

  1. 使用N数据库具有相同 架构,每个样品

  2. 使用一个数据库,但N套表。例如,User_1,...,User_N; Product_1,...,Product_N,Order_1,...,Order_N等等。

  3. 使用一个数据库,一套表用户,产品,订单,但是添加到每个表格,它表示一个样本指数的辅助列。显然,这个列应该是一个索引。

最后的变种似乎是最方便的使用,因为所有的查询变得简单。在第二种情况下,我需要将一个表名称作为参数发送给一个查询(存储过程)(有可能吗?)。

那么你会建议哪种方式?表现非常重要。

回答

5

第1步。获取有关数据仓库的书 - 因为这就是你正在做的。

第2步:分区你的数据转化为事实(可测量的东西像$的,权重等)和尺寸

步骤(如产品名称,订单号,用户名等非可测量的属性) 3.建立一个事实表(例如,订购物品),由事实的维度包围。订单项目的产品,订单项目的客户,订单项目的订单号码,订单项目的日期等等。这将是单个数据库中的一个事实表和多个维度表。每个“起源”或“来源”只是基本事实的一个维度。

第4步。使用非常简单的“SELECT SUM()GROUP BY”查询来汇总和分析您的数据。

这是性能最高,最具扩展性的做生意的方式。购买Ralph Kimball的数据仓库工具包书籍以获取更多详细信息。

不要构建Ñ数据库具有相同的结构。建立一个用于测试,一个用于生产,但不建立N

不要构建Ñ表具有相同的结构。这就是关键所在。

+0

步骤2和步骤3:还有谁提供这种解决方案的商业人士。 – 2010-01-22 18:27:13

1

那么,如果你分开数据库,你会有更小的表。这通常更高效。 如果您需要访问另一个数据库,那么使用Microsoft SQL Server即可。如果你需要到另一台服务器上的数据库,那也是可能的。

这取决于数据的相关程度。

+0

不同样本之间的数据不存在依赖关系。每个样本都是来自其他的独立样本。 BUt ...如果将有100个数据库呢?没关系? – flashnik 2010-01-22 18:24:38

+0

这取决于:服务器有多少RAM,有多少服务器,有多少人访问每个数据库,每秒有多少读/写,有多少带宽可用。 通过建议几个数据库,我已经猜测你每个样本将有数百兆字节的数据。如果每个样本仅使用50-100兆数据库空间,那么就像前面提到的那样,只需添加一个带有每个样本ID的表格就可以坚持到一个数据库并让您的生活更轻松。 – Trevoke 2010-01-22 18:33:41

2

这里是一个例子。示例中的事实表的每一行都有一个来自订单的行项目。 OrderID字段可用于查找特定订单中的所有项目。

sales_model_03

+1

+1赞赏图。 – 2011-06-03 12:51:21

相关问题