0

我们的 MySQL 数据库中有几个非常大的表(3 个表,每个 2 ~ 5 GB)。我们正在运行物流应用程序,其中我们结合了路线、时间表、容量、位置、价格规则等实体,这些巨大的表格包含来自上述实体的“连接”数据。

我们必须拥有这些表,因为在运行时执行 JOINS 会完全破坏性能。我们确实有索引 ;)、缓存机制、高效的准备好的语句、适当的事务管理设置,但性能不够(〜数千名客户,〜数百名或 VIP 客户)。

我们的客户主要进行99% 的只读操作,例如搜索连接、时间表、定价,然后有时会有1-2% 的 UPDATE/INSERT 操作,例如预订一些旅程、容量等。

我们的想法是使用一些无 SQL 数据库(可能是 MongoDB)作为第二个数据库,我们会将所有预生成的只读数据放入一些键值或树结构中。我们相信性能会更好,这个解决方案的注意事项是什么?您对此类任务有亲身经历吗?

我们计划制作快速原型,但没有人真正拥有 NoSQL 的实际经验。

4

2 回答 2

2

大家应该都熟悉memcache的kv结构吧?站在你的团队中,NoSQL 可以被认为是一个带有存储的内存缓存。您可以像使用内存缓存一样将数据重组为 NoSQL。

然后你会发现一切都变得容易了。

总之,忽略高级功能,迈出第一步。

于 2012-09-11T05:57:33.577 回答
1

当你的数据模型中有大量 JOINed 数据时,MongoDB 绝对不是正确的选择,因为它不支持连接。您并没有对您的数据模型说太多,但是当您可以将其转换为大多数数据嵌入到其他实体中而不是存储在单独的集合中时,那么 MongoDB 可以为您工作。由于分片和副本集,它可以很好地扩展,尤其是对于写访问。

或者您是否考虑过使用 Memcached 缓存您的三个大表?3 x 5 GB = 15 GB - 这对于服务器来说并不多。

于 2012-09-11T08:15:35.000 回答