实时广告平台 MongoDB vs. Cassandra vs. MySQL

标签 mongodb database-design cassandra database nosql

我正在开发一个非常注重性能的实时广告平台。我一直使用 MySQL 进行开发,但如果可以实现显着的速度提升,我愿意尝试新的东西,例如 MongoDB 或 Cassandra。我整天都在阅读这两个方面的信息,但由于两者都在快速发展,所以很多信息似乎都有些过时了。

存储的主要数据是每次点击的条目、 View 的递增行以及每个广告系列的信息(只是一些基本设置等)。需要在插入点击、更新 View 总数和生成实时统计报告中找到速度增益。该平台是用PHP开发的。

或者这些都不是?

最佳答案

使用列出的所有技术,有几种方法可以实现这一目标。更多的是你如何使用它们的问题。您理想的解决方案可能会结合使用这些,并考虑使用模式。我不觉得那里的信息过时,因为这些概念非常基础。可能会有新的 NoSQL 数据库和对现有数据库的修复,但您的问题主要是架构问题。

像 MongoDB 和 Cassandra 这样的 NoSQL 解决方案因其插入性能而备受关注。人们倾向于提示关系数据库的更新/插入性能,但有一些方法可以缓解这些问题。

从 MySQL 开始,您可以查看 O'Reilly 的 High Performance MySQL ,优化架构,添加更多内存,或者在与应用程序的其余部分不同的硬件上运行它(假设您为此使用了 MySQL),或者分区/分片数据。另一个需要考虑的领域是您的应用程序。您可以在插入数据库之前在应用程序级别对插入和更新进行排队吗?这将为您提供一些灵 active ,并且可能在所有情况下都有用。根据您最终模式的外观,只要您熟悉 SQL,MySQL 就会为您提供一些提取数据的帮助。如果您需要使用第 3 方报告工具等,这是一个好处。

MongoDB 和 Cassandra 是不同的野兽。我的理解是向后者添加节点更容易,但由于 MongoDB 内置了复制等,这种情况发生了变化。这两个平台的插入不受与关系数据库相同的约束。提取数据也非常快,并且您可以灵活地更改数据格式。权衡是您不能使用 SQL(对某些人来说是一个好处),因此获取报告可能会比较棘手。没有什么可以阻止您在其中一个平台中收集数据,然后将其导入 MySQL 数据库以进行进一步分析。

根据您的要求,您应该查看除 NoSQL 数据库之外的其他工具,例如 Flume .这些利用了广泛用于分析的 Hadoop 平台。对于您正在做的事情,这些可能比数据库具有更大的灵 active 。有一些来自Hadoop World的内容您可能会感兴趣。

关于实时广告平台 MongoDB vs. Cassandra vs. MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162789/

相关文章:

javascript - 如何将多个分隔符传递到 mongodb 查询中的 $split 管道函数中?

mongodb - Geonear 按距离和时间排序

MongoDB 系统配置文件集合 : no data for "insert" operations?

php - 将记录插入主表;另一个表的外键列

cassandra - 如何将 OpsCenter 与 CCM 结合使用?

cassandra - 德鲁伊能取代 Cassandra 吗?

java - Cassandra 2.1 : User Defined Types - Achilles - Java Mapping

javascript - meteor 在模板中迭代列表

language-agnostic - 如何设计一个数据库,其中主实体表有 25 个以上的列,但单个实体的列平均填充 <20%?

mysql - 统计数据库中单词出现次数的最佳解决方案