我有一个拥有数百万个实例的实体。每个实例都必须引用项的有序列表。列表必须是唯一的,因此不会存储多个列表。但是一旦创建,列表和实体实例都是不可变的。实体实例远远超过列表,数据库必须支持快速插入实体 。
那么存储不可变,唯一,有序列表的插入效率,强大,存储方式是什么?
编辑:到目前为止,我已经考虑过这些方法:
1)
lists
表包含以下列:<list_id> <order> <item>
因此,如果列表#5包含元素[10,20,30]
,则表格将包含:
5 1 10
5 2 20
5 3 30
实体表将有一个引用item_list_id
表的lists
列(它不是外键,因为list_id
不是lists
表中的唯一列 - 这可以通过添加另一个包含单个列的表来解决,该列包含所有有效的list_ids
)。
2)
lists
表包含以下列:<list_id> <item1> <item2> <item3> ... <itemN>
因此,如果列表#5包含元素[10,20,30]
,则表格将包含:
5 10 20 30
实体表将有item_list_id
列,引用lists
表。
第3)
使用解决方案#1,但用序列化形式的列表中的散列(比如SHA-1)替换无意义的list_id
。
答案 0 :(得分:1)