У нас есть относительное крупномасштабное приложение, использующее реляционную БД (MSSQL). После большого чтения я решил, что хочу изучить с помощью MongoDB, а не MSSQL, главным образом из-за проблем производительности и масштаба.Как смоделировать данные с помощью MongoDB
я читать и изучать о Монго и не мог понять, ответ на следующие вопросы:
- Должны ли мы сделать это? Говорим, что у нас есть время инвестировать, единственный вопрос: «Это хорошо для нас?»
- Как смоделировать наши данные?
Моя проблема с монго заключается в том, что у нас в нашей БД есть много отношений. После прочтения this great post (и second part, а), я понял, хорошая практика будет разделить решение на 3 сценария:
- 1 до нескольких
- 1 ко многим
- 1 до squillions ,
В нашем db, в большинстве случаев мы используем один-ко-многим, но проблема в том, что в большинстве случаев это один и тот же «один».
Например, у нас есть таблицы пользователей и транзакций. Каждый пользователь может выполнить транзакцию, поэтому в основном то, что я должен сделать, чтобы моделировать пользователя следующим образом:
{ «имя»: «Джон», ... «Сделки»: [ObjectId (» ... "), ObjectId (" ... "), ...] }
До сих пор все в порядке, проблема в том, что у нас есть намного больше, чем просто транзакции, например, у нас могут быть: сообщения , запросы и многие другие функции, такие как транзакции, а затем моя коллекция пользователей становится огромной (более 25 "столбцов"). А также, когда я хочу получить набор данных, мне нужно сделать несколько запросов, в отличие от MSSQL, в которых я просто использую оператор Join.
Еще одна проблема заключается в том, что мне придется сэкономить много дополнительных данных, например, для каждой транзакции я должен сохранить идентификатор терминала, а в отчете мне нужно будет показать имя терминала, case (как для моего понимания) У меня есть 2 варианта, один - сделать 2 запроса, а другой - сохранить имя терминала. В реляционной БД это простое соединение.
Так что, возможно, для таких схем, как ours, Mongo (или любая другая база данных на базе DB) - не лучший выбор?
- Я знаю тех, кто новичок вопросы :)
- Мы используем C# для нашей стороны сервера (ASP.Net Web API)
Спасибо заранее!
«Больше 25 столбцов» не проблема, вы можете сохранить намного больше в объекте пользователя. О присоединениях: https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ – malcolm
Спасибо @malcolm Я знаком с этим поиском, но, как я понял, это не использует Mongo, а злоупотребляет, это? –
Shaul Zuarets, насколько велика ваша MS SQL db? Я имею в виду, что размер db - это много МБ, ГБ или ТБ? Какие данные делают db большими (текст, капли, индексы)? Какой процент прочтений против записи у вас есть? –