@adiunov
Предприниматель

Как структура баз данных эффективнее: много записей, много таблиц или много баз?

Есть задача - хранить в SQL БД информацию пользователей (примерно 100 тыс пользователей, сотни миллионов записей). Вся структура данных может храниться в 6 таблицах. Реализовать мы можем 3 способами:

1. Информация всех 100 тыс. пользователей хранится в шести таблицах одной базы данных (суммарно десятки-сотни миллионов записей будет в самой большой таблице). Тут я переживаю за скорость работы.
2. Для каждого пользователя создаются свои таблицы (6 на пользователя) в одной базе данных (600 тыс таблиц).
3. Для каждого пользователя создаются свои базы данных с 6 таблицами каждая (100 тыс баз данных). Тут есть подозрения, что базы данных сами по себе займут много места, но я не уверен.

Как лучше поступить с точки зрения эффективности и скорости работы? Может, есть другой вариант?
  • Вопрос задан
  • 1984 просмотра
Решения вопроса 3
petermzg
@petermzg
Самый лучший программист
Лучше: 1 база данных, 6 таблиц, и грамотные индексы.
Ответ написан
Безусловно, БД проектируются так, чтобы лучше всего обрабатывать большое количество сущностей в малом количестве "контейнеров" - много записей в небольшом числе таблиц, много документов в небольшом числе коллекций и т.д.

5 миллионов и даже 100 миллионов записей для нормальной СУБД это вполне адекватная нагрузка (до 1 миллиона - это вообще ни о чём). Как уже заметил Петр , ГОРАЗДО важнее то, какие индексы вы добавите.

Схемы и таблицы должны добавляться исходя из нужд приложения, например при добавлении новых фич. Базы данных должны создаваться исходы из административных нужд - ограничение доступа, политика резервного копирования и т.д. 5, 10, и даже 50 БД на одном сервере это нормально (если на это есть основания), а вот 500 тысяч - это уже ни в какие ворота.
Ответ написан
Комментировать
@shagguboy
правильней много записей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MetaAbstract
@MetaAbstract
Архитектор информационных систем и баз данных. Ful
Лучше скомбинировать RDBMS и NoSQL. Например MySQL + Cassandra
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы