http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/:
Facebook 使用 MySQL,但主要用作键值持久存储,将连接和逻辑移动到 Web 服务器上,因为在那里更容易执行优化(在 Memcached 层的“另一端”)。
有人能解释一下我们如何用 mysql 实现简单的键/值存储吗?它只是一个以 bigint 作为主键 + 单列的表LONGTEXT
吗?
http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/:
Facebook 使用 MySQL,但主要用作键值持久存储,将连接和逻辑移动到 Web 服务器上,因为在那里更容易执行优化(在 Memcached 层的“另一端”)。
有人能解释一下我们如何用 mysql 实现简单的键/值存储吗?它只是一个以 bigint 作为主键 + 单列的表LONGTEXT
吗?
真正的出发点应该是“您的数据是关系型的吗?” 如果是这样,请使用关系数据库!
键值对非关系数据是一个很好的解决方案,但如果你的数据是关系数据,使用 SQL 并完成它。
要回答您的第一个问题,是的,键/值存储就是这样,您存储一个键和一个与该键关联的值。并且您根据密钥进行查询。
您从中获得的最大优势是,
Facebook 也有很多不适合普通 RDBMS 使用的关系模型的数据,即图。这意味着他们查询/存储/处理数据本身的图形性质,而不是使用 SQL 处理。
这样做的代价是复杂性,并且通常您必须放弃一些ACID属性。
我们其他人,那不是 facebook/google/linkedin/等。只需要处理最多只有几百万用户的网站通常可以坚持使用传统数据库。