【问题标题】:High performance querying - Suggestions please高性能查询 - 请提出建议
【发布时间】:2010-03-30 16:41:50
【问题描述】:

假设我有数以百万计的用户资料,包含数百个字段(姓名、性别、喜欢的宠物等等……)。

您想搜索个人资料。

例如:所有年龄在 x 和 y 之间、喜欢蝴蝶、讨厌巧克力的个人资料......

你会选择数据库吗?

假设您有 Facebook 类似的负载。 速度是必须的。 首选开源。

我已经阅读了很多关于 Cassandra、HBase、Mongo、Mysql 的内容......我只是无法决定......

【问题讨论】:

  • 数百个与其他行共享的字段意味着您可能会从一些规范化中受益。

标签: database nosql


【解决方案1】:

这都是关于使用有效索引的。 如果您有特殊查询,请为该查询创建索引。

例如。创建一个索引 age_lovebutterflies_hateschoclate

如果你有一个像 facebook 这样的高流量网站,你需要的不仅仅是 sql 优化。例如,memcaching,实现了像 vespa 或 lucene/solr 这样的搜索引擎,实现为集群。负载均衡器、具有 64gb 内存的多台服务器、raid 磁盘以及许多其他服务器技术......

mysql、postgresql、sqlite 和 oracle 等数据库的问题是索引可以用于静态搜索,但它们不灵活。例如,如果您想组合对未编入索引的列的搜索,则不会使用索引。前任。如果你包括一个额外的参数,比如性别或另一个类似的位置..你将不得不创建更多的索引...... lucene/solr 和一个真正的搜索引擎以这种方式更有效,因为你可以进行尽可能多的组合比如...您所要考虑的只是一个列被索引,而不是它与其他列一起索引...

所以,Facebook...这是一个很长的路要走老兄;)

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 2011-11-26
    • 2019-09-27
    • 2013-08-03
    • 2021-08-03
    • 2013-02-17
    • 2021-12-15
    相关资源
    最近更新 更多