Как настроить базу данных для проекта, используемого на нескольких поддоменах, и какую технологию лучше использовать? - PullRequest
0 голосов
/ 17 апреля 2019

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

Проект (ЛОГИКА) должен быть чем-то вроде slack.com. Субдомен представляет клиента (clientAlpha.slack.com, clientBeta.slack.com и т. Д.). Проблема в том, что я могу представить несколько решений, и все они имеют много недостатков.

Все данные будут храниться на моем сервере - клиент только регистрируется

  1. Как организовать структуру БД для нескольких клиентов?

    • У каждого клиента есть своя собственная база данных с некоторым префиксом. Но есть проблема с каким-то «супер-дБ», который вызывает необходимость подключения нескольких дБ. Несколько БД = ужасная работа при обновлении структуры БД.
    • Одна БД с несколькими "супер-таблицами" и множеством одинаковых таблиц для каждого клиента. Я это самое уродливое решение. Та же проблема обновления структуры, что и выше.
    • «Обычная» БД с «обычными» таблицами, где клиент представлен Foreign_key. Это решение влияет на скорость DB.
  2. Какой тип БД лучше использовать? Я имею в виду, есть ли ограничения по количеству данных (строк)? У меня есть хорошие практики с MySQL и MongoDB. Нет GPS, нет блобов - в таблицах будут храниться только «чистые» данные (числа, строки, логические значения, тексты)

  3. По-прежнему ли распространено использование PHP для сервера или PHP мертв для создания нового проекта? / Или хорошо использовать JavaScript (node.js)?

Я пытался найти какую-то информацию об этом, но тысячи людей = тысячи мнений: /

Спасибо за ваше руководство и рекомендации.

1 Ответ

1 голос
/ 17 апреля 2019

Некоторые примечания, к большому количеству комментариев:

  • Открытое соединение с базой данных может обращаться не только к базе данных по умолчанию.Используйте datbase.table для доступа к другим базам данных.
  • Используйте либо разные (и уникальные) префиксы, либо разные базы данных.Не смешивайте их.
  • Если используются разные базы данных, используйте одну специальную базу данных для глобальных данных (ваши супертаблицы).
  • Всегда существуют ограничения базы данных.Лучше всего оценить ваши требования, умножить их на 10 и посмотреть описания баз данных.В любом случае, большинство дискового пространства и памяти ограничены.
  • Создайте чистый макет базы данных с оптимальными элементами (например, выберите smallint, если вы храните значения только от 0 до 1000), создайте схемы для доступа к базе данных, чтобы определитьключи.Сделайте оба, прежде чем начинать реализацию.
...