|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Я так понял - там три понятия. БД/Коллекция/Документ. Всё создаётся прямо на лету (дешево) - отсюда вопрос; как правильно распределять сущности по всем этим делам? Использовать псевдо-реляционный подход или как? Допустим, есть юзер, есть чат, есть сообщения в чате. Пятьсот юзеров как дикие пишут свои сообщения. Я пока склоняюсь к: Одна БД. Коллекция чатов. Коллекция сообщений. Коллекция юзеров. Или сообщения должны "сидеть" в своих чатах? Но на что тогда будет похожа перезапись?? По каким параметрам вообще принято определять "применимость" NoSQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 21:28 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
MongoDB что-ли пробуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 22:44 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Агнец за бортомИспользовать псевдо-реляционный подход или как? Защем? Реляционный подход лучше всего работает в реляционных БД, в нереляционных он работает плохо, очень плохо, или очень-очень плохо. Так что не надо. Агнец за бортомПо каким параметрам вообще принято определять "применимость" NoSQL? По параметрам: 1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL. 2. Преимущественно запись: ты собираешься чаще писать, чем читать. 3. Как хорошее дополнение к SQL, например, кеширование агрегатов, сложный поисковый индекс, хранилище изменений и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 22:47 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Агнец за бортомКоллекция чатов. Коллекция сообщений. Коллекция юзеров. Так. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 22:54 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
skyANAMongoDB что-ли пробуете? Почти. DocumentDB азуровский, там LINQ есть (как я понял). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 23:38 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVostt1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL. Ну а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2017, 23:43 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Агнец за бортомНу а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать? Ты можешь хранить идентификатор пользователя, ник пользователя, и аватар прямо в записи сообщения. Прелесть в том, что ты хранишь сообщение пользователя в чате именно с тем ником и аватаром, с которым он писал сообщение. Это может быть важно. В ином случае, тебе надо выбрать сообщения чата, которые требуется отобразить, ты же не собираешься забрать все +100500 сообщений? Значит заберёшь какую-то часть. Потом соберёшь идентификаторы пользователей и запросишь их отдельно. Пользователей можешь закешировать. Вообще, название "документоориентированная" хорошо отражает суть. Представь себе документ, какой-нибудь договор или приказ. Не важно, что завтра название компании изменится 10 раз, руководитель сменится, адрес, телефон, е-мейл поменяются. Никому в голову не придёт поднимать архив и активно работать замазкой, исправляя существующие документы. Это же очевидный бред. Так же стоит понимать «документы» в БД. Они должны быть самодостаточными. Поэтому не стоит пытаться затолкать реляционные понятия в NoSQL, это совершенно другие принципы работы с данными, не замена SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2017, 01:26 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Агнец за бортомhVostt1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL. Ну а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать? Целого не надо. Только малую часть, что нужна в сообщении: никнейм к примеру. Самый распространённый подход. А сменит пользователь пол, имя, страну проживания... Его право. А в чате должно остаться то, что 10 предыдущих лет сообщения были от Ани. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2017, 07:07 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Кстати для MongoDB есть возможность скачать официальный Architecture guide. По DocumntDB наверняка что-то подобное есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2017, 07:16 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
автор Значит заберёшь какую-то часть. Потом соберёшь идентификаторы пользователей и запросишь их отдельно. Примерно сейчас так и делаю - соединяю уже на клиенте. Ладно, ок, основной посыл я понял. А вообще - что является самой дорогой операцией в NoSQL? Или - чего _точно_ не стоит делать? Имитировать JOIN не нужно - это я понял. Почему сообщения - это отдельная таблица, а не массив сообщений как поле чата? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2017, 12:45 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
Агнец за бортомА вообще - что является самой дорогой операцией в NoSQL? Или - чего _точно_ не стоит делать? Имитировать JOIN не нужно - это я понял. Наверное самая дорогая операция, это обновление, так как обновляется весь документ, даже если изменилось одно поле. Если планируется частое чтение и редкая запись, то лучше выбрать SQL. Агнец за бортомПочему сообщения - это отдельная таблица, а не массив сообщений как поле чата? Потому что обновляется весь документ. Поэтому лучше отдельная коллекция. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2017, 20:28 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttНаверное самая дорогая операция, это обновление... ХЗ.В общем случае - инсерт. Надо всю базу перестраивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2017, 19:40 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ShSerge, С чего это вдруг? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2017, 20:49 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttShSerge, С чего это вдруг? Апдейт 1 на 2 - ничего не стоят. А вот инсерт... . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2017, 20:56 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ShSergeАпдейт 1 на 2 - ничего не стоят. А вот инсерт... . Ты про какую БД говоришь? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2017, 21:11 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttShSergeАпдейт 1 на 2 - ничего не стоят. А вот инсерт... . Ты про какую БД говоришь? MS SQL, Oracle, MySQL, Berkley DB. Насчёт монго - там ещё хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2017, 21:31 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ShSergeMS SQL, Oracle, MySQL, Berkley DB. Насчёт монго - там ещё хуже. Что хуже? Тесты показывают, что вставка новых записей в монгу быстрее, чем в SQL базы данных, и довольно существенно. Отсюда вопрос. Ты сам выдумал то, о чём говоришь, или откопал где-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 08:20 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttЧто хуже? Тесты показывают, что вставка новых записей в монгу быстрее, чем в SQL базы данных, и довольно существенно. Какие тесты? Кто проводил? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 11:24 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Соперничать по этому вопросу с гуглом не буду ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 15:47 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВ, Соперничать по этому вопросу с гуглом не буду Сцылко есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 16:56 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Ну вот например https://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 17:56 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВ, Ну вот например https://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/ Никчемный тест. Я вот тут недавно делал загрузку ФИАС, на первичной вставке вышло ~23000 строк/сек, правда в oracle и bulk copy. Нужно смотреть на конкурирующую работу хотя бы сотен потоков, которые вставляют, извлекают, изменяют и удаляют. Плюс надо смотреть на сохранность-целостность данных. Хрен с ним лайком в соцсети, он изначально никому не нужен, а вот когда бабло с карты спишить, но не отдасть - другой базар. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 18:40 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
hVostt...Отсюда вопрос. Ты сам выдумал то, о чём говоришь, или откопал где-то? Тесты проводил сам. Сейчас результаты показать не могу. Нету их у меня. Монго на быстродействие не проверял - не реляционная и говённо-недоделаная. А вот насчёт сравнения сохранности данных ... . Может с Ораклом сравнить? (дба1 и дба2 закончил). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 19:25 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ЕвгенийВНикчемный тест. Я вот тут недавно делал загрузку ФИАС, на первичной вставке вышло ~23000 строк/сек, правда в oracle и bulk copy. Нужно смотреть на конкурирующую работу хотя бы сотен потоков, которые вставляют, извлекают, изменяют и удаляют. Плюс надо смотреть на сохранность-целостность данных. Хрен с ним лайком в соцсети, он изначально никому не нужен, а вот когда бабло с карты спишить, но не отдасть - другой базар. Ты пока ещё тоже не понял NoSQL, зачем он нужен, как его можно применять, как его люди юзают, и как извлекают из этого офигенный профит. Сравниваешь в лоб, как лыжи и апельсины. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 19:59 |
|
NoSQL - как правильно?
|
|||
---|---|---|---|
#18+
ShSergeТесты проводил сам. Сейчас результаты показать не могу. Нету их у меня. Монго на быстродействие не проверял - не реляционная и говённо-недоделаная. А вот насчёт сравнения сохранности данных ... . Может с Ораклом сравнить? (дба1 и дба2 закончил). Я не вижу причин их противопоставлять. Мы используем в одном проекте Postrges, MongoDB и ElasticSearch. Если заказчик захочет оракл и купит его, будем использовать оракл. Эпитеты «говённо-недоделанная» исходят от банальной необразованности, человеческая натура такая: гнобить всё, что понять и осилить не в состоянии. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2017, 20:08 |
|
|
start [/forum/topic.php?fid=17&msg=39446725&tid=1349294]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 309ms |
0 / 0 |