有人能解释一下我们如何用mysql实现简单的键/值存储吗



http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/:

Facebook使用MySQL,但主要是关键值持久存储,移动web服务器上的联接和逻辑因为优化更容易在那里表演(在Memcached层(。

有人能解释一下我们如何用mysql实现简单的键/值存储吗?它只是一个以bigint为主键的表+一列LONGTEXT吗?

真正的出发点应该是"您的数据是关系型的吗?"如果是,请使用关系数据库!

键值是非关系数据的一个很好的解决方案,但如果您的数据是关系数据,请使用SQL并使用它。

要回答第一个问题,是的,键/值存储就是存储一个键和与该键相关的值。您可以根据密钥进行查询。

你从中获得的最大优势是,

  • 可扩展性。现在,您可以轻松地将数据分布在许多(数千(台机器上。这是传统RDBMS不擅长的,跨许多机器的连接和酸保证要么是不可能的,要么非常非常慢

Facebook还有很多数据不符合普通RDBMS使用的关系模型,即图。这意味着它们自己查询/存储/处理数据的图形性质,而不是使用SQL进行处理。

这样做的代价是复杂性,而且通常您必须放弃ACID属性的几点。

我们其他人,那不是facebook/google/linkedin/等。只需要处理数百万用户的网站,通常只需要使用传统的数据库。

最新更新