4

我需要处理几个数据样本,比如说,N. 样本代表相似的数据,但来自不同的来源。例如,不同商店的订单历史。所以所有样本的结构都是一样的。要处理数据,我有几种可能性:

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

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

  3. 将一个数据库与一组表用户、产品、订单一起使用,但向每个表添加一个表示示例索引的辅助列。显然,这一列应该是一个索引。

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

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

4

3 回答 3

5

第 1 步:获取一本关于数据仓库的书——因为这就是你正在做的事情。

第 2 步。将您的数据划分为事实(可衡量的东西,如美元、重量等)和维度(不可衡量的属性,如产品名称、订单号、用户名等)

步骤 3. 构建一个由该事实的维度包围的事实表(例如,订单项)。订单项的产品、订单项的客户、订单项的订单号、订单项的日期等等。这将是一个事实表和多个维度表在一个数据库中。每个“起源”或“来源”只是基本事实的一个维度。

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

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

不要建立N个结构相同的数据库。为 TEST 构建一个,为 PRODUCTION 构建一个,但不要构建N

不要建立N个结构相同的表。这就是钥匙的用途。

于 2010-01-22T18:19:39.737 回答
2

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

sales_model_03

于 2010-01-23T13:50:45.380 回答
1

好吧,如果您将数据库分开,您将拥有更小的表。这通常更高效。如果您需要访问另一个数据库,可以使用 Microsoft SQL Server。如果您需要访问另一台服务器上的数据库,这也是可能的。

这将取决于数据的相关性有多强。

于 2010-01-22T18:21:10.923 回答