
Sergey
23.06.2016
07:09:06

Vadim
23.06.2016
07:09:19

abc
23.06.2016
07:14:50
если использовать ObjectID от MongoDB тогда и писать нужно в MongoDB

Google

abc
23.06.2016
07:15:16
Ведь MongoDB гарантирует уникальность ObjectID в пределах активной БД

Belegnar
23.06.2016
07:15:54

abc
23.06.2016
07:16:47
проще тогда считать SHA256 хеш от какого то значения из сохраняемых данных ( при условии что они неизменяемые) и добавлять стандартный ид от постгреса

Cykooz
23.06.2016
07:17:00

Vadim
23.06.2016
07:17:07

abc
23.06.2016
07:17:55
чтобы монга не теряла данные ееж надо в кластере использовать с репликой. один инстанс монги это сам себе буратино

Sergey
23.06.2016
07:17:57
Ведь MongoDB гарантирует уникальность ObjectID в пределах активной БД
Я вот не уверен, в доках по монге это не написано.
ObjectId(<hexadecimal>)¶
Returns a new ObjectId value. The 12-byte ObjectId value consists of:
a 4-byte value representing the seconds since the Unix epoch,a 3-byte machine identifier,a 2-byte process id, anda 3-byte counter, starting with a random value.

Vadim
23.06.2016
07:18:02
точенй посетителей, а не совсем юзеров

abc
23.06.2016
07:18:09
но в 90% случаев монга не нужна это да. просто хайп и модно
я сейчас активно использую RethinkDB как замену MongoDB, там плющек больше язык запросов более широкий, и одни только changefeed чего стоят

H
23.06.2016
07:19:33
а когда она теряет данные? я за джва года не сталкивался ни разу
при интерте или апдейте? есть ли issue?

abc
23.06.2016
07:20:28
я слышал но у меня тоже не было. наверное такое бывает если диск у монги закончился. она же практически ничего не говорит когда так

Google

abc
23.06.2016
07:20:47
или при резком шатдаун. а синк на диск еще не успел пройти

H
23.06.2016
07:20:48
лол, диск закончился
текстовые файлы тоже теряют данные!

Sergey
23.06.2016
07:21:06

H
23.06.2016
07:21:20
я с монги перехожу на постгрес 9.5 сейчас

abc
23.06.2016
07:21:33
в версии монги 2, журнал включался опционально вроде.. чтобы инсерты быстрее шли его отключали

Cykooz
23.06.2016
07:21:37

H
23.06.2016
07:21:55
тоже буду обьекты хранить, но постгрес 9.5 чета совсем клевый

Sergey
23.06.2016
07:22:03
Я тоже много слышал, что монга данные теряет, но так никто из так, кто это говорит, никаких примеров не смог привести.

abc
23.06.2016
07:22:11
вот бы постгрес научился масштабироваться горизонтально как монга, было бы вообще хорошо. но пока он только вертикально может
основная причина использования монги если убрать весь хайп, это легкое масштабирование. воткнул еще одну ноду и все

H
23.06.2016
07:23:08
не знаю, не знаю
мне было лень придумывать схему для нового проекта, поэтому просто обьекты хранил
по 10 раз меняю структуру в неделю

abc
23.06.2016
07:23:42
ну и в много есть GridFS я ее активно использую. потому как не надо думать как размазывать файлы по серверам, за тебя это делает GridFS

Sergey
23.06.2016
07:23:45

H
23.06.2016
07:24:00
теперь когда в проде, можно и схему сделать для релейшенов, но чет лень

Cykooz
23.06.2016
07:24:06
У меня были реальные примеры корапта данных в монге, но они были из-за того, что в монге нет транзакций, а все нужные данные нельзя было сохранить/обновить за один запрос к только одному документу.

H
23.06.2016
07:24:26

abc
23.06.2016
07:24:40
там как бы есть "шутливые" транзакции в пределах одного документа)))

Google

Sergey
23.06.2016
07:24:52

abc
23.06.2016
07:24:59
в общем если джоины не нужны то можно и в монгу
но например у меня есть проект бухгалтерии, и я низачто не буду переводить его на монгу) только транзакции только postgresql

Sergey
23.06.2016
07:26:27
Монга хороша своей нереляционнной природой. Там, где данные не реляционны, это даёт огромный профит по производительности из-за отсутствия join-ов

abc
23.06.2016
07:27:22
иногда очень трудно сразу же понять природу данных. монга и рефинк дб подходят круто если приходит какой то json мы пока не знаем че там, просто сохраним как есть. потом разберемся

Sergey
23.06.2016
07:27:24
Запросит поле из одного документа явно быстрее, чем сджойнить 10 табличек

abc
23.06.2016
07:27:51
но rethinkdb на голову выше монги по построению запросов просто как небо и земля

Cykooz
23.06.2016
07:28:00
в общем если джоины не нужны то можно и в монгу
Это слишком расплывчатое определение, не покрывающее всех кейсов. Я бы уточнил - если не нужна консистентность, все запросы будут не зависимы и допустимо выполнить первую чать запросов, а вторую часть запросов зафейлить.

abc
23.06.2016
07:28:20
ну да монго же не гарантирует ACID

Sergey
23.06.2016
07:28:36
А транзакции скорее всего будут, wired tiger их умеет.
Уже в 3.2 есть read concern

Cykooz
23.06.2016
07:28:51

abc
23.06.2016
07:29:02
если будут транзакции то у монги будет проблема с репликами как я думаю
монга это же CAP больше

Sergey
23.06.2016
07:29:22
Не умеет
http://source.wiredtiger.com/2.4.1/transactions.html

abc
23.06.2016
07:29:45
если у постгреса убрать транзакции то он будет масштабироваться как монга)

H
23.06.2016
07:30:36

Sergey
23.06.2016
07:30:40

abc
23.06.2016
07:30:57
да шарды верно ссори

Sergey
23.06.2016
07:31:18
Ну на шардах транзакции никак не сделать, это хоть где

Google

Sergey
23.06.2016
07:31:55
Ну или крайне сложно и с кучей ограничений

Cykooz
23.06.2016
07:32:12
http://source.wiredtiger.com/2.4.1/transactions.html
Хм, а можете подсказать ссылочку на применение всего этого отнсительно MongoDB? Я вот когда стал использовать 3.2 с WiredTiger так и не нашёл ничего про настоящие транзакции. Не нашёл ни какого описания как открыть транзакцию, закомитить или сделать ролбек.

Sergey
23.06.2016
07:32:38

Cykooz
23.06.2016
07:33:15
Зачем тогда этот WiredTiger без монги? Лучше уж тогда сразу PostgreSQL пользовать.

H
23.06.2016
07:34:54
не понимаю, зачем люди берут монгу и хотят там транзакции, база ведь не об этом...

abc
23.06.2016
07:36:39
привычка. большинство по привычке в монге пилит документы на коллекции и потом пытается их джоинить

Cykooz
23.06.2016
07:37:22

abc
23.06.2016
07:37:27
я был свидетелем, как один проект выбрал монгу. хотя там вся структура отлично ложилась на РСУБД. ох какие танцы были когдда клиент захотел отчеты в разных разрезах...

Cykooz
23.06.2016
07:39:45
На монгу неплохо ложится кейс когда надо только вставлять данные, но не изменять их потом. Иначе сталкиваешься с необходимостью поддерживать "денормализованное" состояние документов (например поменял имя юзера, и надо его поменять во всех других документах, в которых оно есть)

Admin
ERROR: S client not available

abc
23.06.2016
07:40:37
да верно. и это реальная проблема, ошибка архитектора при выборе базы я бы сказал. за такое увольняют потом. потому что пойдут просто офигенные издержки

H
23.06.2016
07:41:08
ну вот у меня так и есть, надо только апдейтить поля, не связанные никак друг с другом, что довольно удобно

Cykooz
23.06.2016
07:41:37
Ну и правилльно выше писали, что единственный значимый плюс монги - это лёгкое шардирование из коробки. Больше особых плюсов нету.

H
23.06.2016
07:41:42
статью на хабре тут смотрю, ебать тут индекс у пострес
https://habrastorage.org/files/4c1/01d/d32/4c101dd32fe1465088bb16e40b505c58.png
полгига!

Sergey
23.06.2016
07:42:03

H
23.06.2016
07:42:04
юзает кто-то jsonb сейчас в постгресе?

Richard
23.06.2016
07:42:06
А отсутствие схемы?

Google

Richard
23.06.2016
07:42:18
И сколько должно быть данных чтобы потребовалось шардирование?

H
23.06.2016
07:42:37
отсутствие схемы - jsonb

Richard
23.06.2016
07:42:44

H
23.06.2016
07:42:45
где угодно храни

Cykooz
23.06.2016
07:42:51

H
23.06.2016
07:42:57
https://habrahabr.ru/post/274313/

Sergey
23.06.2016
07:43:07
jsonb даже в 9.5 с ограничениями

H
23.06.2016
07:43:11
Мы юзаем
а сколько строк и сколько индекс весит?

Richard
23.06.2016
07:43:52
Мы используем json как и положено: для хранения безструктурных данных.

H
23.06.2016
07:44:21
без поиска вообще?

Cykooz
23.06.2016
07:44:23

Richard
23.06.2016
07:44:27
24 миллиона было полгода назад, сейчас под тридцатник уже, наверное.

H
23.06.2016
07:44:42
подтягиваешь объект по id?

abc
23.06.2016
07:45:32
и кстати. если все таки нужен NoSQL и джоины, то тогда лучше брать RethinkDB. там джоины между таблицами (а таблицы без структуры) из коробки

Sergey
23.06.2016
07:45:36

Richard
23.06.2016
07:45:40
без поиска вообще?
Ищем, но т.к. в json данные без структуры по всей таблице но по строке. Т.е. строки определённого типа содержат одинаковые записи. И вот когда ты все нужные строки отфильтровал там их так мало оказывается что дальше просто поиск по json нормально работает.
так, мой клиент не позволяет редактировать сообщения :/
Какой клиент под мак это позволяет?

H
23.06.2016
07:46:44
официальный?

Sergey
23.06.2016
07:46:51

Richard
23.06.2016
07:47:15
Telegram? Не Telegram Desktop?

H
23.06.2016
07:47:21
т.е у вас там совсем каша в базе? просто у меня одинаковые обьекты, но различаются немного