Fork me on GitHub
#clojure-russia
<
2018-11-28
>
kuzmin_m16:11:27

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.

jetzajac23:11:22

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

jetzajac23:11:32

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

kuzmin_m19:11:49

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

kuzmin_m19:11:42

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

jetzajac19:11:32

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

kuzmin_m19:11:05

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

dottedmag18:11:11

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

dottedmag18:11:34

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

y.khmelevskii20:11:54

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