并行系统的性能有两个主要考虑因素:均匀分布数据;和将要连接的数据的搭配。第一点已经解决:选择一个好的分区键,可以为您提供良好,均匀的数据分布。
至于我的第二点,如果要加入数据(例如更新),则必须有很少或没有数据移动。确保这是真的将减少数据流量。确保数据并置的最佳方法是使用相同的分区键。相同的密钥将始终散列到同一节点;同一节点表示没有流量进行连接。例如,假设您有Cust(CNo),Order(Ono),Order Item(Ono,INo)和Product(PNo)。主键在括号中。如果使用上面的分区键,则不会并置数据。但是,如果您在Cust中使用CNo,在订单中使用fk CNo,并在订单项中放置一个冗余的CNO,作为分区键,它们将被并置。产品不能配置但不需要;它通常不是那么大,将CNo放入产品中是没有意义的。
NOSQL不允许连接,因为它无法确保连接数据的并置(还有其他原因)。在NOSQL中,数据将分布在各种节点上。
两个伟大的性能杀手是各种笛卡尔和笛卡尔的产品。确保在Netezza上加入的数据中不存在这些内容。
我不建议使用 Netezza 对于OLTP,我们遇到的情况是数据太大而我们没有其他选择。在这种情况下,您可以进行一些调整以加快速度。
Netezza
distribution
distribute on
distribute on random
organize
Integer
Date
或者,您可以考虑混合设计
SQL Server
Postgres