Может кто-нибудь объяснить, как мы реализуем простые хранилища ключей / значений с помощью MySQL? - PullRequest
1 голос
/ 11 июля 2011

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

Facebook использует MySQL, но в основном в качестве постоянного хранилища с ключом-значением, перемещая соединения и логику на веб-серверы, поскольку там легче выполнять оптимизацию (с другой стороныСлоя Memcached).

Может кто-нибудь объяснить, как мы реализуем простые хранилища ключей / значений с помощью mysql?Это просто таблица с bigint в качестве первичного ключа + один столбец LONGTEXT?

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Отправной точкой должно быть "ваши данные связаны?" Если это так, используйте реляционную базу данных!

Ключ-значение - отличное решение для нереляционных данных, но если ваши данные являются реляционными, используйте SQL и покончите с этим.

0 голосов
/ 11 июля 2011

Чтобы ответить на ваш первый вопрос, да, хранилище ключей / значений - это просто, вы сохраняете ключ и значение, связанное с этим ключом.И вы делаете запрос на основе ключа.

Большие преимущества, которые вы получаете от этого,

  • Масштабируемость.Теперь вы можете легко распределять свои данные по многим (тысячам) машинам.Это то, что традиционная СУБД не очень хороша, объединения и гарантии на многих машинах либо невозможны, либо очень медленны.

Facebook также имеет много данных, которые не соответствуют модели отношенийобычные СУБД использует, а именно графы.Это означает, что они сами запрашивают / хранят / обрабатывают графическую природу данных вместо того, чтобы обрабатывать их с помощью SQL.

Стоимость такого способа сложна, и часто приходится тратить несколько пунктов * 1011.* ACID свойства.

Остальные из нас, это не facebook / google / linkedin / etc.которые могут обрабатывать сайты с количеством пользователей до нескольких миллионов, обычно могут просто использовать традиционную базу данных.

...