【问题标题】:Handling extremely large amounts of data in web-based applications在基于 Web 的应用程序中处理大量数据
【发布时间】:2012-07-16 08:18:50
【问题描述】:

为基于 Web 的应用程序存储大量数据的最佳方式是什么?

每条记录只有 3 个字段,但每天将有大约 1.44 亿条记录 - 存储一个月 - 总共 4,464,000,000 条记录。让我们四舍五入到 50 亿。

数据必须可根据关键字搜索并尽快将结果返回给最终用户。

  • 哪种编程语言?
  • JSON / XML / 一些我从未听说过的数据库系统?
  • 什么样的基础设施?想象一下,这个系统最多只能同时满足 1000 名用户的需求。

我假设无论您搜索 10 条记录还是 100 亿条记录,代码都是相同的,您只需要提高效率即可。我还假设 mySQL/PHP 没有机会,我们将为托管解决方案支付巨额费用。

真的需要一些关于从哪里开始的指导。谢谢!

【问题讨论】:

  • 您已将问题标记为“数据操作”,而问题本身看起来就像您只需要搜索和显示。那么:只读还是 r&w 访问?
  • 是的,你是对的,谢谢马丁!删除了标签。而且,“更好”的是,用户没有写入权限 - 写入是通过 cron 完成的,因此(应该)只有一个用户(cron 作业)正在写入“数据库”。
  • @Sarah,这个 cron 作业多久写入一次数据库?它会简单地将记录添加到末尾,还是同时运行DELETEUPDATE 查询?

标签: bigdata data-management


【解决方案1】:

大数据生态系统中有许多工具(NoSQL 数据库、分布式计算、机器学习、搜索等)可以回答您的问题。由于您的应用程序的写入量很大,因此我会推荐 Apache Cassandra,因为它具有出色的写入性能(尽管它需要比 NoSQL/文档数据库(如 MongoDB)更多的数据建模)。您还需要基于 Solr 或 ElasticSearch 的搜索解决方案,以及用于索引和查询的 Map/Reduce。

编程语言无关紧要,除非您的业务最终用户将针对您的大数据编写查询,在这种情况下,您可以使用类似于 SQL 的东西,例如 Hive 或 Pig。为了帮助您入门,以下(最近的)链接可能会让您了解如何根据您的需求选择分析堆栈 - 请注意,每个数据库或分布式计算范例都专门针对某些特定用例:

How we picked our analytics stack

还可以查看High Scalability,了解有关公司如何解决可扩展性问题的各种用例。

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2012-01-30
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多