与 Cassandra 的分区相比,我想讨论 PlayORM 的虚拟分区是否始终是分区数据的最佳方式。
架构:
- 时间戳
- 设备ID
- 设备名称
- 设备所有者
对于 TimeStamp,有 500 K 行,对于特定的 Device ID,有 10 K 行
如果我想在 2 列上进行分区,请说时间戳和设备 ID。我有以下方法可以做到这一点:
- 使用 PlayORM 在两列上进行“虚拟”分区,这样任何列的任何虚拟分区的数据都分布在所有节点上。
- 使用 Cassandra 对其中一列的内置分区支持,并使用 PlayORM 的方法在其他列上创建“虚拟”分区。
如果“设备 ID”以“Cassandra”方式进行分区,则特定“设备 ID”的所有记录将存储在磁盘中的连续位置,并且可以像 playorm 那样继续使用“时间戳”的虚拟分区方法。我可能比 PlayORM 的方法更喜欢这种方法的原因是,使用 Cassandra 的分区方法,如果特定设备 ID 的所有记录位于磁盘上的物理连续位置,则可以快速获取它们,因为它们的数量较少(仅 10K)。这可能比 PlayORM 将所有分区的记录均匀分布在节点上的全部方法更好,因为这样数据将随机分布在磁盘上,导致许多磁盘寻道,显然这会减慢速度。所以即使在 PlayORM 的方法中,
以上似乎是一个有效的观点,还是我的理解有问题?