Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Одна база данных или много?
Я разрабатываю веб-сайт, который будет управлять данными для нескольких объектов. Данные не являются общими для всех объектов, но они могут принадлежать одному и тому же клиенту. Клиент может захотеть управлять всеми своими сущностями из одного "dashboard". Так что я должен иметь одну базу данных для всего, или держать данные разделены на отдельные базы данных? Есть ли лучшая практика? Каковы положительные / отрицательные стороны для того, чтобы иметь:
- база данных для всего сайта (сущности имеет "customerID", данные имеет "entityID")
- база данных для каждого клиента (данные "entityID")
- база данных для каждой сущности (отношение база данных для клиента находится за пределами база данных)
Несколько баз данных, похоже, будут иметь лучшую производительность (меньше строк и соединений), но в конечном итоге могут стать кошмаром обслуживания.
Лично я предпочитаю отдельные базы данных, а именно базу данных для каждой сущности. Мне нравится такой подход по следующим причинам:
- Меньше = быстрее относительно запросов.
- Запросы гораздо проще.
- Нет риска случайно показать данные одного клиента другому.
- Одна база данных может представлять собой узкое место производительности, поскольку она становится большой (#сущностей увеличивается). Вы получаете своего рода построение в горизонтальной масштабируемости с 1 на объект.
- Легкая очистка данных по мере удаления клиентов или объектов.
Конечно, потребуется больше времени для обновления схемы, но по моему опыту изменения довольно редки после развертывания, а дополнения тривиальны.
Я думаю, что на этот вопрос трудно ответить без дополнительной информации.
Я прислоняюсь к краю одной базы данных. Правильно закодированные бизнес-объекты должны предотвратить забвение clientId в ваших запросах.
Тип используемой базы данных и способ ее масштабирования могут помочь вам принять решение.
Для изменений схемы в будущем, кажется, одна база данных будет проще с точки зрения обслуживания - у вас есть одно место, чтобы сделать их.
Ознакомьтесь с этой статьей на сайте корпорации Майкрософт. Я думаю, что он хорошо справляется с распределением различных затрат и выгод, связанных с Мультитенантными проектами. Также посмотрите на статью о нескольких арендаторах в Википедии. Есть много компромиссов, и ваш лучший матч во многом зависит от того, какой тип продукта вы разрабатываете.
Это также зависит от вашего RDBMS например
С SQL серверными базами данных идет чип
С помощью Oracle можно легко разбить таблицы по клиентам "customerID", поэтому одна большая база данных может работать так же быстро, как и маленькая база данных для каждого клиента.
Однако каждый раз, когда вы выбираете ведьму, старайтесь скрыть ее как низкий уровень в вашем коде доступа к данным
Одним из хороших аргументов для сохранения их в отдельных базах данных является то, что их легче масштабировать (вы можете просто иметь несколько установок сервера, а клиентские базы данных распределены между серверами).
Другой аргумент заключается в том, что после входа в систему вам не нужно добавлять дополнительную проверку where (для клиента ID) в каждом из ваших запросов.
Таким образом, мастер DB, поддержанный несколькими DBs для каждого клиента, может быть лучшим подходом,
Если клиенту когда-либо понадобится восстановить только один объект из резервной копии и оставить остальные в их текущем состоянии, то обслуживание будет намного проще, если каждый объект находится в отдельной базе данных. если они могут быть скопированы и восстановлены вместе, то может быть проще поддерживать сущности как единую базу данных.
Я думаю, что вы должны выбрать наиболее реалистичный сценарий и не обязательно то, что клиент "may" хочет сделать в будущем. Если вы собираетесь продавать эту функцию (т. е. видеть все ваши объекты в одной панели мониторинга), то вам нужно либо найти решение (возможно, использовать панель мониторинга из нескольких баз данных), либо использовать одну базу данных для всего приложения.
IMHO, наличие данных для нескольких клиентов в одной базе данных просто кажется мне плохой идеей. Вы должны всегда помнить, что ваши запросы нужно фильтровать по clientID.