【问题标题】:How to perform select on a massive dataset of 10 billion+ rows如何在超过 100 亿行的海量数据集上执行选择
【发布时间】:2016-02-11 00:11:48
【问题描述】:

用户注册时,邮箱必须是唯一的,注册检查时间最长为1秒。

Facebook / Google 如何设法在具有数十亿行的表上执行选择,并检索即时响应。

是不是就这么简单:

select email from users where email = "xxx@yyy.zzz" limit 1

email 字段上有一个索引并在超快的服务器上运行这个查询可以解决问题吗?

或者还有更多内容?

【问题讨论】:

  • 跨多个节点/服务器对数据进行分区。分区通常是一些可以合理分散大型数据集的键。所有喜欢这个分区的花椰菜的人。然后,您可以轻松缩小搜索范围。甚至更好...所有电子邮件的人在此服务器上都以 s,t,r 开头。
  • @ahojvole 如果我记得他们使用技巧根据某些条件将其拆分到多个数据库。此外,使用 noSQL 等技术可以提高速度,DB 的工作方式是减去集合和二叉树,这些都有助于快速召回,同时保持可扩展性

标签: sql select bigdata


【解决方案1】:

简短的回答,是的。虽然有这么多的数据,但我认为您可能想要研究分片等事情,以使事情变得更快

使用 SQL 时,可以通过使用主键来确保索引和唯一性。然后驱动数据库的后端使用这些主键来确保表中没有重复。因为键用于索引表中的行,这也意味着由于这些索引,即使是大量数据的查找也会快得多。将主键设置为电子邮件地址,在这种情况下你应该很好。

即使在使用 Mongo、Cassandra 等 NoSQL 数据库时,也有必要为您的数据创建索引以便快速查找。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2011-04-16
    • 2017-08-27
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多