我需要处理几个数据样本,比如N
。样本代表相似的数据,但来自不同的来源。例如,不同商店的订单历史。所以所有样本的结构都是一样的。为了操作数据,我有几种可能性:
使用相同的N
个数据库
架构,每个样本一个
使用一个数据库,但N
个表集。例如,User_1,...,User_N; Product_1,...,Product_N,Order_1,...,Order_N等。
将一个数据库与一组表User,Product,Order一起使用,但向每个表添加一个表示样本索引的辅助列。显然,这一栏应该是一个索引。
最后一个变体似乎是最方便使用的,因为所有查询都变得简单。在第二种情况下,我需要将一个表名发送给查询(存储过程)作为参数(是否可能?)。
那么你建议哪种方式?表现非常重要。
答案 0 :(得分:5)
步骤1.获取有关数据仓库的书籍 - 因为这就是您正在做的事情。
步骤2.将数据划分为事实(可衡量的事物,如$,重量等)和维度(不可衡量的属性,如产品名称,订单号,用户名等)
步骤3.构建由该事实的维度包围的事实表(例如,订单项)。订单商品的产品,订单商品的客户,订单商品的订单编号,订单商品的日期等等。这将是一个事实表和单个数据库中的多个维度表。每个“起源”或“来源”只是基本事实的一个维度。
步骤4.使用非常简单的“SELECT SUM()GROUP BY”查询来汇总和分析您的数据。
这是业务性能最高,可扩展性最高的方式。购买Ralph Kimball的数据仓库工具包书籍了解更多详情。
不要构建具有相同结构的 N 数据库。为TEST构建一个,为PRODUCTION构建一个,但不构建 N 。
不要构建具有相同结构的 N 表。这就是关键所在。
答案 1 :(得分:2)
答案 2 :(得分:1)
好吧,如果你分开数据库,你会有更小的表。这通常更高效。 如果您需要访问其他数据库,则可以使用Microsoft SQL Server。如果你需要访问另一台服务器上的数据库,那也是可能的。
这取决于数据的相关程度。