我正在开发一个非常注重性能的实时广告平台。我一直使用 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/