一张有500亿条记录的表,我该怎么做?

时间:2018-04-05 18:08:52

标签: sql-server database-design

我希望你在项目中提供帮助。我想设计多语言闪卡数据库。这为大量用户服务;每个用户可以拥有任意数量的卡片(单词)。为了统计目的,我必须存储每张卡片(单词)的所有学习历史记录。

假设我们有50万用户,每个用户有10000卡(字);每个单词有大约100条记录(例如,如果答案是真或假)。存储此历史记录的示例方法是使用下表:

USER_ID,Word_Id,日期,Answer_Type

但是这张表将通过大量的记录,大约500亿条记录。 有没有一种有效的方法,它不会影响查询时间。

1 个答案:

答案 0 :(得分:0)

我们团队中的一位建议: (1)使用XML并将其存储在数据库中。作为XML数据类型 (2)将用户的单词划分为小组(标题),一组中约20张卡片。卡片表示:正面有一个单词,背面有意思。 (3)使用word的属性(XML属性)来存储所有历史条目。

例:

<Group>
  GroupNo:01
  TotalCards=20
  ……
  <Card>
    CardNo=1;
    FrontWord=EnW98347;
    BackWord=CnW7536;
    History=20180301,1 + 20180315,0 + 20180330,1;
    ……;
    ……;
  </Card>
     ……;
  <Card>
    ……;
  </Card>
</Group>

其中:20180301,1 =日期,真或假。

但我认为这个过程在查询中可能需要更多时间。我们还需要更多的存储空间。  有关此

的任何建议或意见