【发布时间】:2016-02-28 04:39:36
【问题描述】:
我正在尝试为用户数据库建模。这些用户拥有各种生命统计数据:年龄、性别、身高、体重、头发颜色等。
我希望能够编写如下查询:
让所有身高 5 英尺 1 英寸到 6 英尺 0 英寸、红头发、体重超过 100 磅的用户
或
获取所有 6 英尺 0 英寸的男性用户,年龄在 31 到 37 岁之间,头发是黑色的
如何为我的数据建模以进行这些查询?假设这个数据库将拥有数十亿用户。我想不出一种不需要我发出许多请求或将数据聚集在极少数节点上的方法。
编辑:
再多一点背景知识,我们假设这个思想问题是建立一个约会网站。该网站应允许用户根据上述标准(年龄、性别、身高、体重、头发等)过滤人员。这些过滤器是可选的,您可以拥有任意数量的过滤器。该网站拥有 20 亿用户。这是否可以仅通过数据建模来实现?
如果我理解正确 如果我有 20 亿用户,并且我创建了第一个答案中提到的两个表(假设性别选项为男性和女性,头发颜色为金发、棕色、红色),那么对于第一个表,我将放在如果每个人都有金发,最多有 20 亿条记录在一个节点上。最佳情况,三个节点上的 2/3 亿条记录。在第二种情况下,我将在最好的情况下和最坏的情况下在每个节点上放置 2/5 亿条记录。我错了吗?分区键不应该比这更独特吗?
【问题讨论】: