本质上,我们使用Rails进行开发,并希望开发一个高可伸缩性的票务系统。本质上,我们将拥有一个小型数据库(包含事件详细信息和售票),该数据库的阅读量将激增(用户每天访问该站点的用户高达120万)和较低水平的写入(当用户请求票证时,以及当用户购买票证时编写)。
写操作需要持久化到磁盘,但我们希望将整个数据库保存在内存中(可能使用memcached)。现在,我们将在Mysql (RoR上的activerecord)上构建它。
问题是,这个设置是否适合我们未来的需要,在那里我们可能需要组织几十个有上百万点击量的活动。
发布于 2011-06-27 16:54:58
可伸缩性是每一个期望大幅增长的业务的因素。最终,只有你和你的团队才能用任何适合你的钱包和时间的因素来回答这个问题。我们所能做的就是提供一些选择。
您可以使用主MySQL数据库进行写入,然后实现复制以创建多个只读的从站。
或者MySQL用于写数据库,然后创建一个定制的ETL应用程序,将事务性数据转换为只读数据,并将其放置到NoSQL数据库中,比如Cassandra。我发现Cassandra对于大量的阅读(如果人们正在对您的内容执行搜索的话)是最佳的,但是它需要您在数据库领域非常精明。
发布于 2011-06-28 11:44:43
就个人而言,在票务系统的情况下,我关注的是全文搜索功能和位图索引扫描(即能够挑选出可能包含适合idx1、idx2和idx3的行的一两个磁盘页)功能,而不是原始性能。但那只是我--在trac,灯塔,红矿等地进行的票证搜索,在我的经验中是令人沮丧的。
根据这一标准以及性能,Postgres非常适合这一要求。(它在heroku上有售。)
发布于 2011-06-28 09:13:53
这听起来像是一些NoSQL数据库擅长的事情。这里的关键也是确保位于数据库前面的应用程序体系结构也设计得很好--听起来像一个经典的CQRS (命令和查询责任隔离)使用模式。无论选择哪个DB,这至少都将有助于性能。
https://dba.stackexchange.com/questions/3506
复制相似问题