Size: a a a

Node.js — русскоговорящее сообщество

2020 May 18

ЕП

Евгений Пантелеев... in Node.js — русскоговорящее сообщество
Sergey 🛸
Потому что отсутствие связей - одна из фичей nosql
не пойму
т.е. если есть куча коллекций, у которых есть user, ты предлагаешь, не выносить пользователя в отдельную таблицу, а встраивать его во все места?
источник

А

Александр in Node.js — русскоговорящее сообщество
Алексей Попов
Давай определимся для начала, есть связи, или их нет
Или есть, но неполноценные
связей нет, есть вариант хранить ссылки на другие документы, к чему вообще все это?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Евгений Пантелеев
не пойму
т.е. если есть куча коллекций, у которых есть user, ты предлагаешь, не выносить пользователя в отдельную таблицу, а встраивать его во все места?
В идеале - да. Философия монги что все данные должны храниться в одном документе
источник

А

Александр in Node.js — русскоговорящее сообщество
Евгений Пантелеев
не пойму
т.е. если есть куча коллекций, у которых есть user, ты предлагаешь, не выносить пользователя в отдельную таблицу, а встраивать его во все места?
они предлагают хранить данные так, чтобы при изменении чего-либо пришлось менять дохрена документов, а не один
источник

А

Александр in Node.js — русскоговорящее сообщество
Sergey 🛸
В идеале - да. Философия монги что все данные должны храниться в одном документе
это не идеал, ограничение размера документа - 16мб
источник

А

Александр in Node.js — русскоговорящее сообщество
Алексей Попов
Это как бы и связь, но без гарантий
И проще простого получить тухлую ссылку, ведущую вникуда
Может быть такое, да, а чтобы такого не было, то подобных ситуаций и не нужно допускать
источник

MK

Mihail Kuzmin in Node.js — русскоговорящее сообщество
Евгений Пантелеев
не пойму
т.е. если есть куча коллекций, у которых есть user, ты предлагаешь, не выносить пользователя в отдельную таблицу, а встраивать его во все места?
В монге нет таблиц
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Александр
они предлагают хранить данные так, чтобы при изменении чего-либо пришлось менять дохрена документов, а не один
Потому что это что-либо в любой момент может стать недоступно и все твои связи станут бесполезными
источник

А

Александр in Node.js — русскоговорящее сообщество
Sergey 🛸
Потому что это что-либо в любой момент может стать недоступно и все твои связи станут бесполезными
просто само по себе исчезнуть или что?
источник

ЕП

Евгений Пантелеев... in Node.js — русскоговорящее сообщество
Mihail Kuzmin
В монге нет таблиц
коллекции же
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Александр
просто само по себе исчезнуть или что?
Да, связь между шардами пропадет
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Александр
просто само по себе исчезнуть или что?
Или (к сказанному выше ) баг в коде, или ошибка оператора (удалил не то)

Много вариантов вообще-то
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Евгений Пантелеев
коллекции же
Тут человек настаивает на том, что связь и ссылка разные вещи
Пусть будет последовательным и не путает таблицу (которая имеет структуру) с коллекцией
источник

А

Александр in Node.js — русскоговорящее сообщество
Sergey 🛸
Да, связь между шардами пропадет
а что произойдет в реляционке в этом случае?
источник

А

Александр in Node.js — русскоговорящее сообщество
Алексей Попов
Тут человек настаивает на том, что связь и ссылка разные вещи
Пусть будет последовательным и не путает таблицу (которая имеет структуру) с коллекцией
Это ты обо мне чтоли?
источник

ЕП

Евгений Пантелеев... in Node.js — русскоговорящее сообщество
ну наверн я немного пересмотрел свое мнение на встраивания) в mongoose даже проще с типами будем

кстати, по поводу ссылок в монгус и populate
await Ticket.find({id}).populate("user")

эти два запроса (сначала к коллекции тикетов, а потом к юзерам) выполняется за один поход к монго? или за два?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Александр
а что произойдет в реляционке в этом случае?
Причём тут реляционка? Я пример написал когда связь может стать недоступна, и почему нужно стараться хранить в одном документе
источник

А

Александр in Node.js — русскоговорящее сообщество
Евгений Пантелеев
ну наверн я немного пересмотрел свое мнение на встраивания) в mongoose даже проще с типами будем

кстати, по поводу ссылок в монгус и populate
await Ticket.find({id}).populate("user")

эти два запроса (сначала к коллекции тикетов, а потом к юзерам) выполняется за один поход к монго? или за два?
вроде за 2 в этом случае (хотя могли и поменять), есть родной монговский $lookup
источник

А

Александр in Node.js — русскоговорящее сообщество
Sergey 🛸
Причём тут реляционка? Я пример написал когда связь может стать недоступна, и почему нужно стараться хранить в одном документе
Ну вы же должны понимать, что хранить все в таком варианте не вариант. А реляционка тут не причем, я просто спросил из интереса, нет опыта работы с шардами, что тогда будет, ошибку выдаст?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
В MySQL и postgresql не поддержки шардирования, всё делается на уровне приложения и ты сам решаешь в какой шард что писать и откуда читать
источник