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.
N+1 никуда не девается, просто уходит константа на коммуникацию, которая как раз и стреляет обычно. в Ions используя pull, этой константы тоже не будет. а on-prem есть entity-api и pull тоже работает хорошо. страдают только “клиенты“, но про них замечание ниже
entity-api убрали из ионов только потому, что этот же код может запускаться в контексте клиента (на твоей машине например)
Я не разбирался про ионы и клиенты. Я правильно понял, что если это ion, то приложени использует api как у client, но запускается внутри ion (peer)? И не меняя код, можно подцепиться снаружи для отлади/разработки.
спасибо за ответ
да, правильно
если я правильно помню, ты как-то рассказывал в hangouts про crdt, спасибо)
@kuzmin_m Для микросервисов и лямбд, которые живут настолько мало, что в них нет смысла загружать кусками данные.
IIRC у Datomic Ions вроде опять есть пир.
приветствую!
можно ли в макрос cljs.spec.alpha/cat
передать список. То есть мне нужно сделать что-то типа такого
(apply cljs.spec.alpha/cat '(:props ::props-spec))
, но так так cat
это макрос, я так сделать не могу
@y.khmelevskii https://stackoverflow.com/questions/9273333/in-clojure-how-to-apply-a-macro-to-a-list
@dottedmag спасибо!