【问题标题】:Best implementation of web service with a huge list lookup具有大量列表查找的 Web 服务的最佳实现
【发布时间】:2012-01-23 20:53:53
【问题描述】:

我计划提供一个简单的短语查找网络服务。短语的数量约为 3-5 百万个条目,每个条目少于 50 个字符。该服务非常简单,如果用户给出的短语在列表中,则返回 true,否则返回 false。那么在服务器端,我是否应该只是简单地将条目放入 mysql 数据库中,并在用户短语进入时对其进行查询?还有其他更有效的实现吗?即更快、更少内存、在查询量方面更具可扩展性等。还是应该将其加载到内存中?

我们将不胜感激任何反馈、想法和意见!

【问题讨论】:

  • 您使用什么服务器端语言? PHP、Java 等...
  • 您是要只搜索完整的匹配项,还是要搜索更灵活的内容?换句话说,如果我是用户,并且我想搜索短语“Lorem ipsum dolor sit amet”,您是否让我只输入“Lorem ipsum”并进行通配符匹配,或者您会要求我输入整个内容?
  • @Catcall,现在,我只考虑完全匹配。

标签: php mysql list search lookup


【解决方案1】:

MySQL 应该可以毫无问题地处理 500 万个条目。

如果我是你,我会构建数据库并使用 500 万行和 5000 万行伪随机数据在本地对其进行测试。

如果您能够模拟大量并发连接,那么就这样做。如果没有,只需将其推广给 100 个感兴趣的用户即可。

保留记录。使用分析。

【讨论】:

    【解决方案2】:

    查看MemcachedRedis。易于使用且快速。

    【讨论】:

    • 谢谢,弗朗茨。请在下面查看我对@Cornel 的问题。有什么意见吗?
    【解决方案3】:

    这实际上取决于您将拥有多少并发用户。

    如果您每秒有很多请求,请将数据保存到内存中(看起来您需要很多),例如 memcached。 否则,请使用数据库。

    或者两者都使用:如果数据不是缓存(memcached),则从数据库加载并将其保留在内存中以备将来需要。

    【讨论】:

    • 谢谢,康奈尔。 memcached 的典型大小是多少?我是新手,他们的网站说保留一小部分名称值对是件好事。我不确定这里的“小”是什么意思,以及它对我的情况是否有很大帮助。
    • 这真的取决于你要在其中存储多少数据。检查此tutorial。但也许 SQL 数据库可以。运行一些测试。
    • 另外,memcached 适用于名称-值对,但我的情况是短语的线性数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2015-07-26
    相关资源
    最近更新 更多