Я работаю над многопользовательской системой корпоративного уровня, и мы обсуждаем, как разделить нашу MongoDB, и я читаю, как это сделать, но у меня есть несколько вопросов, если здесь есть эксперт, который может мне помочь.Подчеркну: я прочитал об этом и попытался найти информацию, но он не смог ответить на мой вопрос (или мой google-fu не дал мне результата).
Вопрос 1:Один клиент на коллекцию.
Этот сценарий - то, о чем люди говорят, чтобы избежать, и я не очень удовлетворен способом ответа.Я понимаю, что существует ограничение пространства имен и есть проблема, если у вас более 100 коллекций, но что, если вы построите вокруг этого?
Моя идея состоит в том, чтобы ограничить максимум коллекций в базе данных X (50? 80? 30? Какое-то крутое число) и использовать несколько экземпляров базы данных, но не один на клиента.Это связано с экономией, я хочу нажать на цену за арендатора и, таким образом, поместить несколько арендаторов в одну базу данных и поместить каждого арендатора в коллекцию, чтобы создать хорошее масштабирование коллекций.Насколько я понимаю, когда я читаю документацию по БД Mongo, мой сценарий, описанный выше, будет в порядке, пока я внимательно слежу за количеством коллекций в каждой базе данных.Это даст мне хорошее распространение информации по различным коллекциям, таким образом, используя возможности масштабирования MongoDB, сохраняя при этом стоимость приемлемой.Строка подключения к различным базам данных не будет большой проблемой, я могу справиться с этим достаточно просто.
Я бы нашел вышеописанный сценарий проще, чем разделение клиентов с customer_id и распространение информации в другую коллекцию на основе чего-то еще..
Мои рассуждения все еще неверны?Если да - почему?Где моя логика подводит меня?
Вопрос 2: (Этот вопрос действителен только в том случае, если ответ на вопрос 1 «нет, нет, вы правы» :)) Если я сейчас использую приведенный выше сценарий и у меня естьнапример, несколько клиентов, представляющих собой сеть магазинов.Допустим, IKEA (у них много магазинов), и у вас есть генеральный менеджер, который нуждается в информации от всех арендаторов IKEA. Мне нужно было бы пойти в несколько коллекций, чтобы найти общую статистическую информацию, это проблема?Я уже думал о том, чтобы поместить определенных клиентов в одну конкретную базу данных для них (например, IKEA или другие сети), имея в виду, что если их меньше 100, то мне «нужно» только просмотреть одну базу данных, но мне нужно получить информацию из нескольких разных коллекций., это проблема?
Я знаю, что есть несколько ссылок на похожие вопросы, например:
Каков рекомендуемый подход к многопользовательским базам данных в MongoDB?
https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases/multi-tenant.html
https://azure.microsoft.com/en-us/blog/new-multi-tenant-patterns-for-building-saas-applications-on-sql-database/
но я чувствую, что им не хватает ответа на этот вопрос.
Надеюсь, вы понимаете разницу вмой вопрос.Большое спасибо!