Поддержка подзапросов в datomic

Поддерживает ли datomic подзапросы или их можно имитировать в запросе? По сути, это будет :find внутри другого :find.

Я пытаюсь выполнять аналитические преобразования данных в самом запросе/БД, а не в приложении.


person rrevo    schedule 14.06.2017    source источник
comment
Можете ли вы привести пример?   -  person Alan Thompson    schedule 15.06.2017
comment
Пример SQL похож на [выберите id, len from (select id, length(foo) as len from user) as t;] Таким образом, я могу создавать вложенные таблицы с внутренним выбором и выполнять преобразования во внешнем выборе.   -  person rrevo    schedule 15.06.2017
comment
Вы используете Peer API или Client API?   -  person Alexander Kiel    schedule 27.06.2017
comment
Я хотел использовать Rest API (который устарел).   -  person rrevo    schedule 27.06.2017


Ответы (1)


Да, вы можете выполнить «подзапрос» в Datomic. Пример приведен здесь.

Также стоит отметить, что, поскольку работа с запросами происходит в вашем одноранговом узле (при условии, что вы используете Peer API), за выдачу двух отдельных запросов не взимается та же проблема «n + 1», как в случае с традиционной RDB. . Таким образом, в дополнение к подходу с подзапросом вы также можете сначала выполнить «внутренний» запрос, а затем передать его результаты в качестве параметров «внешнему» запросу.

-Маршалл

person Marshall    schedule 16.06.2017
comment
Я надеялся на один запрос, а не на несколько запросов от клиента. - person rrevo; 16.06.2017
comment
Как видно из этого ответа, вы можете вызвать datomic.api/q внутри предложения журнала данных, чтобы создать «подзапрос» внутри вашего внешнего запроса. - person Marshall; 19.06.2017