Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
Привет всем.

Есть аналитическая система на базе NoSQL. Хранит би-теморальные метадаты. Наподобие.

keyvaluestartend


Primary key : (key,start,end)

Еще ограничение бизнес-уровня. Временные отрезки для каждого одинакового key - не пересекаются. Но могут
быть открытыми в плюс-бесконечность.

В виде сущности
class BiTemporalMeta(var key: Int, var value: String, var start : LocalDate, var end : LocalDate)


Возникла идея - прикрутить к ней какое-то подобие SQL интерфейса чтоб можно было делать
выборки с фильтрами.

Сущности - это просто value в NoSQL системе. В качестве key там используется некий длинный код metakey.
И табличка - это и есть суть этот metakey

Собственно - вопросы.
1) Кто нечто подобное делал? Как сложно?
2) Варианты. Кастомный JDBC-драйвер. Насколько это сложно?
3) Что за программные продукты аvatica, calcite. Каковы их возможности? Насколько сложно поддержать их в данной задаче?
Нужно несколько базовых простых SQL-запросов которые использует например тестировщик. Типа посмотреть значение меты по заданному времени.

Типа
select * from bitemporalmeta19824 where key=12345 and '2019-02-07' between start and end;


Таких запросов будет точно ограниченное количество. Не более 10 штук. И мы заранее с тестером
оговорим их требования. Убеждён что сортировок и группировок там не будет. В основном какие-то
простые точечные выборки.
21 июл 19, 23:39    [21931377]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
Dmitry.
Member

Откуда: Львів
Сообщений: 841
mayton,

2) как-то страдал написанием jdbc. надо было для того чтобы представить json/xml в виде резалтсета для jasper/birt. языком для построения запроса взял груви. https://github.com/char-com-ua/groodbc/wiki
22 июл 19, 10:38    [21931490]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
Dmitry., спасибо. Посмотрю. JDBC-драйвер - это первое о чем я думал. Были попытки написать свой.
Огромное количество заглушек и методов которые нужно реализовать чтобы хоть что-то взлетело.
У меня так к сожалению и не взлетело. После этого я потерял веру в интерфейсы с большим числом
методов. У Connection - их порядка 50. У ResultSet - порядка двухсот. И это самый мимнимум что надо
реализовать еще без учета Statement.
22 июл 19, 11:01    [21931514]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
Kachalov
Member

Откуда: Москва
Сообщений: 5671
[quot maytonПосмотрю. JDBC-драйвер - это первое о чем я думал.[/quot]
- сам не пробовал, но давно приглядываюсь к DataNucleus, может и Вашу NoSQL поддерживает

К сообщению приложен файл. Размер - 33Kb
22 июл 19, 11:42    [21931561]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
У нас - Apache Ignite.
22 июл 19, 11:43    [21931563]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
mayton,
Какого рода запросы?
Стрим можно фильтровать. Это в java аналог Linq в шарпе но послабее чем у них.
22 июл 19, 12:05    [21931596]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
Это не бизнесовая задача. Внутрення скорее.
Что-то типа автоматизации тестирования.

Дать тестеру Stream. .. Вот тут я сомневаюсь.
22 июл 19, 12:47    [21931654]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
Kachalov
Member

Откуда: Москва
Сообщений: 5671
mayton
У нас - Apache Ignite.

Apache Ignite With JPA, а дальше JPQL запросом
22 июл 19, 12:59    [21931666]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7934
mayton
...
Есть аналитическая система на базе NoSQL....
...
Возникла идея - прикрутить к ней какое-то подобие SQL интерфейса
...


Противоречий не замечаете?
Задача попахивает бредом. Хотя, если бюджет выделен, освоить его всегда приятно )))

p.s.
На правах идеи/бреда:
1. можно поискать какие нибудь Open Source JDBC драйвера (например к DBF) и разковырять их, заменив нижний слой на обращение к NoSQL. Но честно говоря, затратить кучу усилий и получить недо-SQL, это жестоко
2. можно написать что нибудь типа PostgreSQL Foreign data wrapper (https://wiki.postgresql.org/wiki/Foreign_data_wrappers) и юзать нормальный SQL синтаксис. Если же взять что-то типа Oracle, то наверное и стандартные BI-тулзы можно будет спокойно натравливать. Хотя в производительность такого решения (для целей OLAP), мне что-то не верится.
22 июл 19, 16:45    [21931901]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
Бюджет пока мой личный. Поэтому все ОК.
22 июл 19, 16:50    [21931912]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
Leonid Kudryavtsev
Задача попахивает бредом
согласен).
Более логично тестерам писать
Stream.
22 июл 19, 16:55    [21931919]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
stream.filter(key-> key.name="abc")....
псевдокод)
22 июл 19, 16:57    [21931922]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
mayton
Бюджет пока мой личный. Поэтому все ОК.
а как они sql пишут? По памяти?
22 июл 19, 16:58    [21931924]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
По моему нормально что тестеры знают SQL но не знают Java.

Или все в топике другого мнения? Тогда я неправ и топик можно закрыть.
22 июл 19, 17:04    [21931931]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7934
mayton
По моему нормально что тестеры знают SQL но не знают Java.

Не очень понятно, что тестеры собираются делать с помощью SQL.

Если тестировать API - то нужно тестировать собственно API, при чем тут SQL, совершенно не опнятно
Если анализировать данные - то тогда нужна полноценная OLAP / BI. Недо-SQL тут конечно в качестве затычки подойдет, но вряд ли с его помощью можно будет реально анализировать хоть какие-то значимые объемы данных.

Посмотрел на https://wiki.postgresql.org/wiki/Foreign_data_wrappers размер Hello World драйвера 300 строк, размер драйвера для CSV файлов - 1225 строк

Вполне приемлимо. Но, нужно понимать, что когда SQL уйдет в full table scan, то может оказаться значительно быстрее, просто данные для анализа перетянуть в "нормальную" БД.

IMHO
22 июл 19, 17:13    [21931941]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
забыл ник
Member

Откуда:
Сообщений: 3024
mayton
По моему нормально что тестеры знают SQL но не знают Java.

Или все в топике другого мнения? Тогда я неправ и топик можно закрыть.


Это нормально. Но, возникает несколько вопросов

1) Если у вас уже есть API - то он и должен юзаться, проблемы тестеров это лично их проблемы.
2) Если как вы говорите запросов штук 10 предефайненых - то проще выучить API
22 июл 19, 17:14    [21931945]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
забыл ник
2) Если как вы говорите запросов штук 10 предефайненых - то проще выучить API

Да. Я щас колеблюсь между тем чтоб как-то генерализировать все варианты и вынести в API.
Либо сделать SQL-ный фасад. Вобщем тема еще не созрела.

За ссылки на DataNucleus - спасибо. Буду изучать. А это пока можно закрыть.
22 июл 19, 17:21    [21931956]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
Тут вроде даже один ко многим нет. Что тогда они делают вместе с SQL?
22 июл 19, 17:22    [21931959]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
mayton
Member

Откуда: loopback
Сообщений: 42508
А что делают на SQL, когда парсят СSV файлы? Просто. Для удобства. Кстати смежный топик есть.
Не обязательно искать 3НФ чтобы обосновать что SQL удобен.
25 июл 19, 18:25    [21934697]     Ответить | Цитировать Сообщить модератору
 Re: Avatica, calcite и кастомные JDBC-дрова для толстой метадаты  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2149
mayton
А что делают на SQL, когда парсят СSV файлы? Просто. Для удобства. Кстати смежный топик есть
ну я не видел таких примеров. И топиков. Тот что видел, там чел просил быстро, а не удобно.
Мне для XML DB интересен XPath. Для ООБД интересна точечная нотация поиска.
Для no sql db интересны средства no sql. Linq например.
Имхо
25 июл 19, 19:20    [21934741]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить