powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Можно ли в NoSQL БД как-то синхронизировать изменения?
4 сообщений из 4, страница 1 из 1
Можно ли в NoSQL БД как-то синхронизировать изменения?
    #40000248
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Попытаюсь сформулировать свой вопрос на некотором примере, для наглядности...

Предположим, что я хочу создать сайт, на котором бы общались жители дома, в котором я живу. Общение на тему решения различного рода вопросов, так или иначе связанных с нашим домом (как вариант). Предположим так же, что я решил back-end писать на JavaScript и в качестве БД взять MongoDb, с которой буду взаимодействовать через Mongoose. Ключевым моментом здесь является то, что MongoDb является NoSQL БД.

На каждом этаже дома имеется некоторое количество квартир. В каждой квартире имеется некоторое количество её владельцев. Т.е. тут, с одной стороны, напрашивается такая структура JSON (с моей точки зрения):
Код: json
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
{
	floors: [
		{
			floorNumber: 1,
			apartments: [
				{ apartmentNumber: 1, roomsCount: 1 
					apartmentOwners: [
						{ firstName: "Ivan", middleName: "Ivanovich", 
							lastName: "Ivanov", phones: ["+77777777777"], 
							emales: ["ivan.ivanov@yandex.ru"] },
						{ firstName: "Natalya", middleName: "Petrovna", 
							lastName: "Ivanova", phones: ["+78888888888"], 
							emales: ["natalya.ivanova@yandex.ru"] },
					]
				},
				...
			]
		},
		...
	]
}

Но вот что, если человек владеет в доме более чем одной квартирой? Тогда получается, что информация о нём будет в таком JSON дублироваться и в случае необходимости внесения правок в информацию о нём (например, смена номера телефона или email), придётся искать его везде с целью синхронизации изменений. Как подобные кейсы решаются в MongoDb и ей подобных нереляционных БД?

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

P.S. Как вариант, мне приходит на ум в apartmentOwners хранить не саму информацию о владельце квартиры, но только его Id, а информацию о человеке хранить в отдельной коллекции документов, например - Users. Но тогда возникает другая проблема: если потребуется из Users удалить человека, то нужно будет "прошерстить" все квартиры и из их массива apartmentOwners удалить все Id этого человека. Т.е. всё это подвержено ошибкам аля "человеческий фактор" (где-то в коде можно забыть добавить логику чистки или написать её не вполне корректно).

В случае использования реляционной БД, таких проблем у меня бы не возникло, но мне интересно, как подобное решается в NoSQL (если вообще решается)?

Спасибо.
...
Рейтинг: 0 / 0
Можно ли в NoSQL БД как-то синхронизировать изменения?
    #40000294
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum
Как подобные кейсы решаются в MongoDb и ей подобных нереляционных БД?

Именно так они и решаются: информация дублируется.
...
Рейтинг: 0 / 0
Можно ли в NoSQL БД как-то синхронизировать изменения?
    #40000330
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum
как подобное решается в NoSQL (если вообще решается)?

С MongoDB надо серъёзно подходить к Schema design.
Продумывать то, где использовать reference, а где embedded document.

На эту тему не одна статья написана: mongodb embedded vs reference .

В вашем примере действительно возможно полную информацию о человеке хранить в отдельной коллекции, а в списке квартир только минимально необходимое количество атрибутов, включая идентификатор.
Это так называемый Subset Pattern .

Также на практике выходит, что схема базы в MongoDB за счёт того, что её легко менять при развитии системы, гибко подстраивается под логику приложения и особых проблем не возникает.
...
Рейтинг: 0 / 0
Можно ли в NoSQL БД как-то синхронизировать изменения?
    #40000339
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Спасибо, поизучаю ссылочки.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Можно ли в NoSQL БД как-то синхронизировать изменения?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]