我们的 MySQL 数据库中很少有非常大的表(3 个表,每个 2 ~ 5 GB)。我们正在运行物流应用程序,其中我们组合了路线、时间表、容量、位置、价格规则等实体。这些巨大的表包含来自上述实体的“连接”数据。
我们必须拥有这些表,因为在运行时执行 JOINS 会完全降低性能。我们确实有索引;)、缓存机制、高效的准备好的语句、适当的事务管理设置,但性能还不够(〜数千个客户,〜数百个或 VIP 客户)。
我们的客户主要执行99% 只读操作,例如搜索连接、安排、定价,有时也会进行一些1-2% 的更新/插入操作,例如预订一些旅程、运力等...
我们的想法是使用一些 no-sql DB(可能是 MongoDB)作为第二个数据库,我们将所有预生成只读数据放入一些键值或树结构中。我们相信性能会更好,这个解决方案有哪些注意事项?您有执行此类任务的个人经验吗?
我们计划制作快速原型(prototype),但没有人拥有真正的 NoSQL 经验。
最佳答案
大家应该都熟悉memcache的k-v结构吧? 站在您的团队中,NoSQL 可以被视为带有存储的内存缓存。 您可以像使用内存缓存一样将数据重组为 NoSQL。
然后你会发现一切都变得容易了。
总而言之,忽略高级功能,迈出第一步。
关于MySQL 巨大的表,迁移到 NoSQL 后性能会提高吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363408/