powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NoSQL - как правильно?
25 сообщений из 85, страница 1 из 4
NoSQL - как правильно?
    #39446623
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял - там три понятия.

БД/Коллекция/Документ.

Всё создаётся прямо на лету (дешево) - отсюда вопрос; как правильно распределять сущности по всем этим делам? Использовать псевдо-реляционный подход или как?

Допустим, есть юзер, есть чат, есть сообщения в чате. Пятьсот юзеров как дикие пишут свои сообщения.

Я пока склоняюсь к:

Одна БД.

Коллекция чатов.

Коллекция сообщений.

Коллекция юзеров.

Или сообщения должны "сидеть" в своих чатах? Но на что тогда будет похожа перезапись??

По каким параметрам вообще принято определять "применимость" NoSQL?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446648
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MongoDB что-ли пробуете?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446650
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомИспользовать псевдо-реляционный подход или как?

Защем? Реляционный подход лучше всего работает в реляционных БД, в нереляционных он работает плохо, очень плохо, или очень-очень плохо. Так что не надо.


Агнец за бортомПо каким параметрам вообще принято определять "применимость" NoSQL?

По параметрам:

1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL.
2. Преимущественно запись: ты собираешься чаще писать, чем читать.
3. Как хорошее дополнение к SQL, например, кеширование агрегатов, сложный поисковый индекс, хранилище изменений и т.д.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446652
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомКоллекция чатов.

Коллекция сообщений.

Коллекция юзеров.

Так.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446659
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAMongoDB что-ли пробуете?

Почти. DocumentDB азуровский, там LINQ есть (как я понял).
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446660
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL.

Ну а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446672
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомНу а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать?

Ты можешь хранить идентификатор пользователя, ник пользователя, и аватар прямо в записи сообщения.

Прелесть в том, что ты хранишь сообщение пользователя в чате именно с тем ником и аватаром, с которым он писал сообщение. Это может быть важно.

В ином случае, тебе надо выбрать сообщения чата, которые требуется отобразить, ты же не собираешься забрать все +100500 сообщений? Значит заберёшь какую-то часть. Потом соберёшь идентификаторы пользователей и запросишь их отдельно. Пользователей можешь закешировать.

Вообще, название "документоориентированная" хорошо отражает суть. Представь себе документ, какой-нибудь договор или приказ. Не важно, что завтра название компании изменится 10 раз, руководитель сменится, адрес, телефон, е-мейл поменяются. Никому в голову не придёт поднимать архив и активно работать замазкой, исправляя существующие документы. Это же очевидный бред.

Так же стоит понимать «документы» в БД. Они должны быть самодостаточными. Поэтому не стоит пытаться затолкать реляционные понятия в NoSQL, это совершенно другие принципы работы с данными, не замена SQL.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446691
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомhVostt1. Не реляционность: тебе никогда не понадобится JOIN, если чувствуешь, что понадобится, гоу на SQL.

Ну а как это? У сообщения есть автор, не хранить же целого юзера в сообщении. У него может поменяться имя/аватар/что угодно. Что делать?
Целого не надо. Только малую часть, что нужна в сообщении: никнейм к примеру.
Самый распространённый подход.

А сменит пользователь пол, имя, страну проживания... Его право. А в чате должно остаться то, что 10 предыдущих лет сообщения были от Ани.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446693
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати для MongoDB есть возможность скачать официальный Architecture guide.
По DocumntDB наверняка что-то подобное есть.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446725
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Значит заберёшь какую-то часть. Потом соберёшь идентификаторы пользователей и запросишь их отдельно.


Примерно сейчас так и делаю - соединяю уже на клиенте.

Ладно, ок, основной посыл я понял.

А вообще - что является самой дорогой операцией в NoSQL? Или - чего _точно_ не стоит делать? Имитировать JOIN не нужно - это я понял.

Почему сообщения - это отдельная таблица, а не массив сообщений как поле чата?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39446782
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомА вообще - что является самой дорогой операцией в NoSQL? Или - чего _точно_ не стоит делать? Имитировать JOIN не нужно - это я понял.

Наверное самая дорогая операция, это обновление, так как обновляется весь документ, даже если изменилось одно поле. Если планируется частое чтение и редкая запись, то лучше выбрать SQL.

Агнец за бортомПочему сообщения - это отдельная таблица, а не массив сообщений как поле чата?

Потому что обновляется весь документ. Поэтому лучше отдельная коллекция.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447550
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНаверное самая дорогая операция, это обновление...
ХЗ.В общем случае - инсерт. Надо всю базу перестраивать.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447569
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

С чего это вдруг?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447574
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShSerge,

С чего это вдруг?
Апдейт 1 на 2 - ничего не стоят. А вот инсерт... .
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447578
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeАпдейт 1 на 2 - ничего не стоят. А вот инсерт... .

Ты про какую БД говоришь?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447589
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShSergeАпдейт 1 на 2 - ничего не стоят. А вот инсерт... .

Ты про какую БД говоришь?
MS SQL, Oracle, MySQL, Berkley DB. Насчёт монго - там ещё хуже.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447659
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeMS SQL, Oracle, MySQL, Berkley DB. Насчёт монго - там ещё хуже.

Что хуже? Тесты показывают, что вставка новых записей в монгу быстрее, чем в SQL базы данных, и довольно существенно.

Отсюда вопрос. Ты сам выдумал то, о чём говоришь, или откопал где-то?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447759
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧто хуже? Тесты показывают, что вставка новых записей в монгу быстрее, чем в SQL базы данных, и довольно существенно.

Какие тесты? Кто проводил?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39447975
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Соперничать по этому вопросу с гуглом не буду
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448034
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВ,

Соперничать по этому вопросу с гуглом не буду
Сцылко есть?
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448089
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448116
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВ,

Ну вот например

https://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/
Никчемный тест.
Я вот тут недавно делал загрузку ФИАС, на первичной вставке вышло ~23000 строк/сек, правда в oracle и bulk copy.

Нужно смотреть на конкурирующую работу хотя бы сотен потоков, которые вставляют, извлекают, изменяют и удаляют. Плюс надо смотреть на сохранность-целостность данных. Хрен с ним лайком в соцсети, он изначально никому не нужен, а вот когда бабло с карты спишить, но не отдасть - другой базар.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448137
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...Отсюда вопрос. Ты сам выдумал то, о чём говоришь, или откопал где-то?
Тесты проводил сам. Сейчас результаты показать не могу. Нету их у меня. Монго на быстродействие не проверял - не реляционная и говённо-недоделаная. А вот насчёт сравнения сохранности данных ... . Может с Ораклом сравнить? (дба1 и дба2 закончил).
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448157
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВНикчемный тест.
Я вот тут недавно делал загрузку ФИАС, на первичной вставке вышло ~23000 строк/сек, правда в oracle и bulk copy.

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

Ты пока ещё тоже не понял NoSQL, зачем он нужен, как его можно применять, как его люди юзают, и как извлекают из этого офигенный профит. Сравниваешь в лоб, как лыжи и апельсины.
...
Рейтинг: 0 / 0
NoSQL - как правильно?
    #39448162
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeТесты проводил сам. Сейчас результаты показать не могу. Нету их у меня. Монго на быстродействие не проверял - не реляционная и говённо-недоделаная. А вот насчёт сравнения сохранности данных ... . Может с Ораклом сравнить? (дба1 и дба2 закончил).

Я не вижу причин их противопоставлять. Мы используем в одном проекте Postrges, MongoDB и ElasticSearch. Если заказчик захочет оракл и купит его, будем использовать оракл. Эпитеты «говённо-недоделанная» исходят от банальной необразованности, человеческая натура такая: гнобить всё, что понять и осилить не в состоянии.
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 1 из 4
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NoSQL - как правильно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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