2010-10-03 2 views
0

Поскольку данные кэшируются так часто и доступ к базе данных происходит только тогда, когда есть новые данные (а затем эти данные кэшированы lol) существует даже реальная разница в производительности для использования первичных ключей Int против UUID первичные ключи.Первичные ключи UUID и Memcached

Например, можно предположить, что im создает NetFlix. В базу данных добавляется новый фильм, а список фильмов вместе со связанными данными помещается в кеш.

Поиск пользователя для фильма (поисковый сервер обрабатывает это), затем находит листинг, нажимает на него и данные извлекаются из кеша.

В этом процессе база данных никогда не читается.

Что вы думаете?

ответ

1

Я архитектор крупный сайт, похожий на Netflix, и вы по большей части верны, почти все не транзакционные данные кэшируются, поэтому оптимизация баз данных ad nauseum не всегда окупается. Все наши названия фильмов предварительно загружены в memcached с помощью повторяющейся задачи, поэтому для части библиотеки в системе база данных никогда не попадает под фактический клиент.

По-прежнему мы не сутулились при разработке структуры базы данных и запросов, потому что мы хотим, чтобы прелоадер работал как можно быстрее и эффективнее.

+0

Эй Крис, есть ли способ, что я могу связаться с вами. Мне интересно ваше потоковое видео. –

0

Я пользуюсь UUID (GuidComb s фактически) для Первичных ключей. Правда, он раздувает некоторые индикаторы, но с 64-разрядной СУБД во всем мире, а память довольно дешевая, я считаю, что преимущества намного перевешивают недостатки. Не нужно ждать, пока вы вставьте, чтобы узнать, что будет вашим PK, является моим фаворитом.

0

Я поддерживаю ответ Криса, но я также хочу указать, что если попытаться загрузить много ключей в память сразу, то вы будете использовать много барана.

Сравнить:

6ba7b810-9dad-11d1-80b4-00c04fd430c8 - 37 байт, или 38, если \ 0 концевыми

Где, как 64-битное целое, всего 8 байтов. И, возможно, может храниться в одном регистре.

Чтобы перейти на следующий уровень.

Допустим, вы хотите загрузить 100 000 идентификаторов в баран.

Это будет 800 000 байт (64 бит) или 3,800,000 байт!

обновление: 8 октября 2010 г.

Кроме того, проверки достоверности UUID строки является немного более сложным, вы должны использовать регулярное выражение.

Однако проверка целого числа проста. intval() php или .to_i ruby ​​и int() для perl.

Это повышает безопасность по отношению к другим людям посылать вы подозреваете данные (веб-боты)

Смежные вопросы