使用MySQL作为键/值数据库的可伸缩性

Lan*_*ard 8 mysql sql performance nosql key-value-store

我很想知道使用MySQL作为键值数据库对Redis/MongoDB/CouchDB的性能影响.我过去使用过Redis和CouchDB,所以我对它们的用例非常熟悉,并且知道在NoSQL与MySQL之间存储键/值对更好.

但情况如下:

  • 我们的大部分应用程序已经有很多MySQL表
  • 我们在Heroku(只有MongoDB和MySQL,并且每个应用程序基本上是1-db-type)上托管所有东西
  • 在这种情况下,我们不希望使用多个不同的数据库.

所以基本上,我正在寻找关于在MySQL中拥有键/值表的可伸缩性的一些信息.也许在三个不同的任意层:

  • 每天写1000次
  • 每小时写1000次
  • 每秒1000次写入
  • 每小时1000次读取
  • 每秒1000次读取

一个实际的例子是构建类似MixPanel的实时Web分析跟踪器,这需要根据流量进行编写.

Wordpress和其他流行的软件一直使用它:Post具有"Meta"模型,它只是键/值,因此您可以向可以搜索的对象添加任意属性.

另一种选择是在blob中存储可序列化的哈希,但这看起来更糟.

你有什么看法?

Rom*_*eau 1

毫无疑问,使用 NOSQL 解决方案会更快,因为它更简单。
NOSQL 和关系型数据库并不相互竞争,它们是不同的工具,可以解决不同的问题。
也就是说,对于每天或每小时 1000 次写入,MySQL 不会有任何问题。
对于每秒 1000 个,您将需要一些精美的硬件才能到达那里。对于 NOSQL 解决方案,您可能仍然需要一些分布式文件系统。

它还取决于您存储的内容。

  • 没有任何调整,我在我的 celeron 1.8ghz 上每秒可以向 innodb 插入 4000 次 (6认同)