Fork me on GitHub
#clojure-russia
<
2017-06-05
>
arsenguzhva05:06:06

А датомик платный?

pavetok06:06:46

Подскажите, пожалуйста: 1. Существуют ли библиотеки с таким или похожим интерфейсом (без макросов)? 2. Если нет, то как лучше будет такое реализовать? В каких направлениях копать? Я пока к зипперам склоняюсь...

user> (def pattern ["foo"])
#'user/pattern
user> (def data ["foo"])
#'user/data
user> (match pattern data)
{:match true}

user> (def pattern [foo])
#'user/pattern
user> (def data ["bar"])
#'user/data
user> (match pattern data)
{:match true :foo "bar"}

user> (def pattern {:foo bar})
#'user/pattern
user> (def data {:foo "bar"})
#'user/data
user> (match pattern data)
{:match true :bar "bar"}

misha07:06:51

что ты имеешь ввиду под match, @pavetok? merge какой-то?

pavetok07:06:54

@misha в общем случае match вовращает ответ да/нет на вопрос похожи ли данные на паттерн? обычный паттерн матчинг

pavetok07:06:03

но если в pattern встречаются переменные, то их значения берутся из data

misha07:06:33

а откуда в последнем результате киворд :bar? опечатка?

misha07:06:21

вот такое есть: https://github.com/clojure/core.match для деструктуризации clojure.core.spec еще можно взять. больше не подскажу

misha07:06:38

а задача какая?

pavetok07:06:14

core.match и core.spec на макросах основаны нужно матчить структуры против структур, т.е. и паттерны и сущности могут лежать в БД, как обычные данные макросы не подходят

niquola08:06:52

А кто postgresql с clojure использует? Интересен ли реактивный postgresql (репликация на клиента)?

andrewtropin09:06:34

nicola: Звучит интересно, пока не понятно на сколько сейчас нам это нужно.

andrewtropin10:06:05

а как кстати подписываться на обновления, если я - не инстанс postgresql?

niquola08:06:06

Я тут поиглал с logical replication - новые возможности - https://blog.2ndquadrant.com/logical-replication-postgresql-10/

mike_ananev11:06:00

@nicola Николай, можешь уточнить, что под клиентом имеется ввиду? И еще вопрос: в концепции микросервисов понятие shared persistance layer считается антипаттерном. то есть если нужно получить доступ к данным, то милости просим через API сервиса, а не напрямую из базы. Таким образом внутренний формат базы - личное дело команды сервиса. Может ли новая фича postgres 10 помочь с идеей микросервисов по реализации доступа к данным через API? ( как вариант - логическая реплика базы оборачивается через API и запросы на доступ к данным адресуются ей, а не базе под нагрузкой)

niquola12:06:42

@mike1452 через логическую репликацию можно из pg получить feed изменений (считай push в datomic), что ты будешь с ним делать дальше - раздавать по rest-api, пихать в web-socket, через кафку, реплицировать в другое хранилище - решай сам. Мне показалось интересным - собрать реактивное решение типа @tonsky datamic/datascript для postgresql

niquola12:06:20

надо только sql над стримами научиться делать для реактивных query (aka https://www.pipelinedb.com/) или его и взять (пока внутрь не заглядывал) и сделать простенький posgtres.js на клиенте 🙂

niquola12:06:56

за язык запросов и подписок можно взять - подмножество honeysql

niquola12:06:30

Вобщем если кому интересно подключайтесь - начал набросок концепции - https://github.com/niquola/pglogic-clj