@matios
Technical Team Lead

Как оптимизировать БД для highload проекта на перспективу?

Привет всем. Подскажите пожалуйста, кто имел дело с highload проектами. Возьмем в качестве примера обычную CRM систему, в которой есть компании заводящие сделки. Как правило для каждой компании создается свой поддомен в рамках которого она работает. Теперь сам вопрос, как для таких целей правильно организовать БД? У меня есть 2 варианта:

1. Для каждой компании создается своя БД с которой она работает. Что это дает:
+ Компании со 100% вероятностью не увидят данных друг друга, в случае если в коде затаится бага проверки прав доступа
+ через несколько лет данных в этой базе будет гораздо меньше, чем если бы была одна общая база на всех, а значит выборка будет шустрее и производительность повыше
- При развитии проекта, придется вносить правки по БД абсолютно для все БД, а если их будет 10к и более - это весьма проблематично

2. Все компании работают с одной и той же БД. Плюсы и минусы как и в первом пункте, только наоборот.

Если делать по второму пункту, и через несколько лет данных в таблице будет более 20млн. Как быть? Как в таком случае поступают? Может делают дубль таблицы и туда заливают новые данные, тогда как быть, если потребуются старые сделки?
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 4
swanrnd
@swanrnd
Издатель HTML5 игр
Конечно первый вариант. Базы ж не пересекаются, а для внесения правок напишите скрипты. Это гораздо будет дешевле, чем разбивать.

А вообще, что для вас Higload. 20 млн строк - это мелочевка. Помню я скорость тестировал на 1 млрд строк.

Нужны следующие данные:
1) размер строки
2) что чаще чтение или запись
3) какая допустимая скорость ответа
4) количество одновременных запросов
5) типы запросов
Ответ написан
Одна база + хороший программист.
От записей зависит в меньшей мере, больше от рук. У нас в проекте за 2 года чуть более 20млд записей (в самой большой таблице), работает очень шустро, в секунду добавляется/удаляется/изменяется не менее 40т строк.
Ответ написан
sim3x
@sim3x
- При развитии проекта, придется вносить правки по БД абсолютно для все БД, а если их будет 10к и более - это весьма проблематично
нет - используются миграции и автоматическое тестирование

Используют комбинированный вариант - маленькие проекты идут в одной базе, крупные проекты, которые платят больше денег - на отдельных нодах
Ответ написан
Комментировать
iam_not_a_robot
@iam_not_a_robot
Вам бы по обычным БД подтянуться. Даже в одной базе они не увидят данные друг друга.
Удаляйте старые данные из БД или переносите их в архивную таблицу или в архивную БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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