
yopp
12.05.2017
19:51:19
Добрый день, подскажите пожалуйста, я новичок в mongodb, хочу написать приложение на связки express + mongodb, раньше писал на ruby, python немного на go, использовал postgres либо mysql, можете сказать пожалуйста какие есть ограничения у mongodb, в плане, на сколько она лучше/хуже postgres'а либо mysql, можно ли делать какой-то большой сервис целиком на связки mongo и express ?
Совершенно побарабану на чём начинать. На чём умеешь, на том и делай. Плюс монги в относительно низком пороге вхождения. В остальном база как база. Нужно запомнить что монга НЕ реляционная база данных и научится мыслить документами. Это значит что подходы из реляционной субд в монге будут работать из рук вон плохо.
Ну и да, не надо забывать что транзакций нет, есть только гарантия атомарности изменений в одном документе. Это требует тоже отдельного мышления.
Но общее правило: если без транзакций никак — лучше брать не монгу
Потому что транзакции в монге ОЧЕНЬ сложно делаются

Google

Ростислав
12.05.2017
19:56:27
спасибо большое, учту!)

Eugene
12.05.2017
19:58:07
Привет, ребят. Сделал 2 формы авторизации и регистрации. Теперь их как то надо обработать на node (желательно без express) и данные запихнуть в монгу. Подскажите мб туториал какой то по созданию и обработки форм и доку какую то

yopp
12.05.2017
20:46:23
это в канал по ноде

Yaroslav
13.05.2017
12:44:17
этот парень вов сех чатах походу одним и тем же собщением метит)

Cyber
15.05.2017
07:54:00
привет, а кто может подсказать, правильно ли я понимаю что в монго не предполагаются join запросы, а для связей надо собирать айди в документе?

Stefan
15.05.2017
07:56:51
Есть $lookup в агрегациях.

Sergey
15.05.2017
08:07:14
Если при работе с монгой понадобился $lookup, значит что-то пошло не так на этапе выбора СУБД

Cyber
15.05.2017
08:07:59
в доках указывается что вроде как нужно коллекционировать айди записей и добавлять их пользователю

Sergey
15.05.2017
08:10:08

Cyber
15.05.2017
08:10:30

Sergey
15.05.2017
08:13:07

Cyber
15.05.2017
08:14:18

Google

Sergey
15.05.2017
08:15:34

Sergey
15.05.2017
08:15:42

Cyber
15.05.2017
08:16:06

Sergey
15.05.2017
08:16:49

Cyber
15.05.2017
08:18:18

Sergey
15.05.2017
08:20:44

Cyber
15.05.2017
08:21:44

Sergey
15.05.2017
08:22:01

Cyber
15.05.2017
08:23:35

Sergey
15.05.2017
08:23:46
И посчитать количество сообщений - простейший count по логину

Sergey
15.05.2017
08:24:37

Sergey
15.05.2017
08:24:45

Cyber
15.05.2017
08:25:57

Sergey
15.05.2017
08:27:00

Sergey
15.05.2017
08:28:10

Sergey
15.05.2017
08:28:48

Sergey
15.05.2017
08:32:12

Google

Sergey
15.05.2017
08:32:33

Sergey
15.05.2017
08:34:33
Почему ?
Пр любой причине: лаг сети, база упала или что-то ещё

Igor
15.05.2017
08:34:58
если база упала, наверное, есть причины для беспокойства поважнее, чем рассинхрон счетчиков, не?)

Sergey
15.05.2017
08:35:55
А если щарды, то запись вообще может быть в разные primary

Sergey
15.05.2017
08:35:59

Sergey
15.05.2017
08:36:12

Sergey
15.05.2017
08:38:44

Stefan
15.05.2017
08:39:38
Пользуюсь счётчиками, брат жив, зависимости нет.
Делаю переиндексацию раз в месяц, когда мне больше делать нечего.
Рассинхрон бывает редко.

Sergey
15.05.2017
08:40:42

Stefan
15.05.2017
08:41:10

Sergey
15.05.2017
08:41:40

Stefan
15.05.2017
08:42:20
С очередью ещё одна проблема появляется)
Это так. В моём случае счётчики не содержат важную величину (деньги или ещё что-то такое), поэтому я могу позволить себе небольшую погрешность. Правда, как я уже говорил, рассинхрон бывает очень редко.

Sergey
15.05.2017
08:44:05

Sergey
15.05.2017
08:46:42
Ну база может и не упадёт, но дц, где находится мастер, вполне может отвалится

Sergey
15.05.2017
08:47:46
ну понятно, просто это счётчики, если у одного из пользователей он нарушится на 1, за два года работы и то если сильно не повезёт.
То в этом нет ничего страшного.
Если они важны реализуй транзакции. Но имхо это лишнее
Соотноси ценность инфы и затраты

Google

Sergey
15.05.2017
08:52:16

Sergey
15.05.2017
08:54:05

Sergey
15.05.2017
09:00:54
Сессии на стороне браузера? А как синхронизация происходит?

Sergey
15.05.2017
09:01:48
У меня сессионная игра.
Сессия на сервере

Sergey
15.05.2017
09:02:13
И один бекенд?

Sergey
15.05.2017
09:03:12
Когда игрок заходит - загружается его сессия (профиль и вся инфа). Далее все обновления вносятся вначале в сессию а затем сессия дёргает бд и записывает в базу.
Пока один сервер, который при нагрузочном тестировании держал 60к CCU. Пока это гораздо больше чем игроков )
А потом возможно будем масштабировать
Пошаговая сессионка, мобильная игра, типа HeartStone

Sergey
15.05.2017
09:04:56
Ну если сервер один, то да - проблем в синхронизации нет

Sergey
15.05.2017
09:05:10
А если 2
Просто половина игроков будут направлены на другой бэкенд и всё тоже самое

Sergey
15.05.2017
09:05:58
Если два, то эти сессии уже надо как-то синхронизировать

Sergey
15.05.2017
09:06:15
ненада

Igor
15.05.2017
09:06:44
игрок же не может одновременно дважды из-под одного акка зайти?

Sergey
15.05.2017
09:07:16

Sergey
15.05.2017
09:09:06

Sergey
15.05.2017
09:15:16
ну это не синхронизация а роутинг
т.е. есть load balancer который один на кластер, и который распределяет по серверам игроков, и знает кто где сидит (по Id) и переправляет запросы
Это имеется ввиду ?
При традиционном подходе как то так делается.
Но с Akka проще. Во первых акторы поддерживают location transparency. (т.е. акторы можно разнести по машинам и они также будут работать как и на одной, при этом код их не поменяется.
А также в Akka Cluster есть готовые примитивы, для построения распределённых систем. Типа Cluster Singleton, различные балансеры, которые раскидывают работу в зависимости от нагрузки на ноду, или по каким либо другим правилам ...

Sergey
15.05.2017
09:20:47
Ну если akka такая крутая и все делает за разработчика, то ок. Я хз что это, первый раз слышу.

Google

redbeard
15.05.2017
09:22:41
это ббилиотека для работы с акторами
есть и для скалы, и для C#

Sergey
15.05.2017
09:23:35
Да, её использует Ebay , Blizzard, CISCO, BBC и другие никому неизвестные компании

redbeard
15.05.2017
09:23:55
what'sapp все равно написан на erlang :)
а вот вопрос: подписка на что в кластере требуется? что отлавливаем?

Sergey
15.05.2017
09:24:37
да это Erlang тоже акторы, похож на Akka

Sergey
15.05.2017
09:24:45

redbeard
15.05.2017
09:25:12

Sergey
15.05.2017
09:26:15

redbeard
15.05.2017
09:29:44
2 Сергея пишут, пойду желание загадывать

Sergey
15.05.2017
09:30:41

Sergey
15.05.2017
09:30:42

redbeard
15.05.2017
09:30:48
Скала - то еще чудо

Sergey
15.05.2017
09:31:25
Я в проекте использую Java + Akka + MongoDB