clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
kuzmin_m 2018-11-28T16:45:27.015900Z

A кто-нибудь знает, зачем в datomic сделали client api? * Недавно они сделали Datomic Cloud и Client API в дополнение к Peer API. Client ходит по сети в пир и выполняет там запрос. Peer же хранит данные в памяти и лениво их подгружает. При этом Cloud поддерживает только Client API. У Peer есть Entity API, который позволяет ходить по связям и избегать проблему N+1. А для Client такое апи невозможно сделать by design. Зачем они сделали Client? Ведь основной фишкой датомика был именно Peer, ленивая загрузка и решение N+1проблемы. А сейчас это условный Postgres, только с datalog вместо SQL.

jetzajac 2018-11-29T23:49:22.021300Z

N+1 никуда не девается, просто уходит константа на коммуникацию, которая как раз и стреляет обычно. в Ions используя pull, этой константы тоже не будет. а on-prem есть entity-api и pull тоже работает хорошо. страдают только “клиенты“, но про них замечание ниже

jetzajac 2018-11-29T23:50:32.021600Z

entity-api убрали из ионов только потому, что этот же код может запускаться в контексте клиента (на твоей машине например)

kuzmin_m 2018-11-30T19:11:49.000100Z

Я не разбирался про ионы и клиенты. Я правильно понял, что если это ion, то приложени использует api как у client, но запускается внутри ion (peer)? И не меняя код, можно подцепиться снаружи для отлади/разработки.

kuzmin_m 2018-11-30T19:12:20.000400Z

@jetzajac

kuzmin_m 2018-11-30T19:12:42.000600Z

спасибо за ответ

jetzajac 2018-11-30T19:18:32.000800Z

да, правильно

kuzmin_m 2018-11-30T19:20:05.001Z

если я правильно помню, ты как-то рассказывал в hangouts про crdt, спасибо)

dottedmag 2018-11-28T18:08:11.016600Z

@kuzmin_m Для микросервисов и лямбд, которые живут настолько мало, что в них нет смысла загружать кусками данные.

dottedmag 2018-11-28T18:09:34.017300Z

IIRC у Datomic Ions вроде опять есть пир.

y.khmelevskii 2018-11-28T20:13:54.020300Z

приветствую! можно ли в макрос cljs.spec.alpha/cat передать список. То есть мне нужно сделать что-то типа такого (apply cljs.spec.alpha/cat '(:props ::props-spec)), но так так cat это макрос, я так сделать не могу

y.khmelevskii 2018-11-28T21:32:53.021200Z

@dottedmag спасибо!