Соучредитель Reddit выступил с презентацией о проблемах, которые они имели при масштабировании для миллионов пользователей. Доступна сводка here.База данных с «Открытой схемой» - хорошая или плохая идея?
Что удивило меня является точка 3:
Вместо этого они держат Thing таблицу и таблицу данных. Все в Reddit - это Thing: пользователи, ссылки, комментарии, субредады, награды и т. Д. Вещи сохраняют общий атрибут, например, вверх/вниз, тип и дату создания. Таблица данных имеет три столбца: id, ключ, значение. Для каждого атрибута есть строка. Есть строка для заголовка, URL-адреса, автора, спам-голосов и т. Д. Когда они добавляют новые функции, им больше не нужно беспокоиться о базе данных. Им не нужно было добавлять новые таблицы для новых вещей или беспокоиться об обновлениях.
Это кажется ужасной идеей для меня, но, похоже, это сработало для Reddit. Это вообще хорошая идея? Или это особенность Reddit, которая сложилась для них?
Фактически в разговоре Хаффман рассказывает о создании отчетов и о том, как они это делают, экспортируя кучу данных в текстовый файл и анализируя его в другом месте. Https://vimeo.com/10506751 m24: 50 –
Reddit имеет немного, если есть требования к целостности данных. Это не то, что они хранят дату или целочисленные значения, которые должны быть между определенными диапазонами или иметь сложные бизнес-правила. I.e., правильность данных не очень важна для сайта, такого как reddit; он просто должен быть в основном правильным. Однако приложения LOB не так терпимы к неточности. Дизайн Reddit ориентирован на то, что данные не корректны. Тем не менее, дело в правильности заключается в том, что, когда вы заботитесь об этом, чрезмерно дорого, чтобы не обращаться к нему заранее. – Thomas