Всем привет.
Есть документная БД, в ней хранятся записи-документы конкретных смысловых сущностей. Для примера пусть сущность эта зовется Person.
Пусть полный документ Person имеет следующий вид:
{
"id": 12345,
"name": {
"ru": "тест",
"en": "test"
},
"permisions": {
"perm1": true,
"perm2": false,
"perm3": true,
},
"contacts": {
"phone": "+000000000",
"email": "person@example.com"
}
}
Дело в том, что для тех или илных Person's может НЕ быть определенных данных. Напрмимер данные контактов могут либо вообще отсутствовать, либо может отсутствовать только часть из них (например телефон). Аналогично c permissions.
Есть http API, которое возвращает на клиент коллекции этих документов, в виде JSON.
Идеологический вопрос. Как лучше хранить И отдавать данные на клиент? Например, если нет данных для контактов, можно записать в БД «расшитые», но пустые контакты, а можно записать объект контактов как null (или пустой объект {}, без расшития на его структуру:
Вар 1.:
"contacts": {
"phone": null,
"email": null
}
Вар 2.:
"contacts": {}
Вар 3.:
"contacts": null
Какой вариант хранения лучше (ВСЕГДА расшитый по максимуму, сжатый, но с сохранением типа [пустой объект], сжатый/зануленный)?
И вопрос со звездочкой, ГДЕ можно прочитать про то, как правильно хранить документы в документной БД, в которой не предусмотрены ограничение целостности данных (монга, еластик и проч)?
Кто как делает в своих проектах?