TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Brackit: A retargetable JSONiq query engine

2 点作者 lichtenberger超过 3 年前

1 comment

lichtenberger超过 3 年前
Hi all,<p>Sebastian and his students did a tremendous job creating Brackit[1] in the first place as a retargetable query engine for different data stores. They worked hard to optimize aggregations and joins. Despite its clear database query engine routes, it&#x27;s furthermore useable as a standalone ad-hoc in-memory query engine.<p>Sebastian did his research for his Ph.D. at the TU-Kaiserslautern at the database systems group of Theo Härder. Theo Härder coined the well-known acronym ACID with Andreas Reuter, the desired properties of transactions.<p>As he&#x27;s currently not maintaining the project anymore, I stepped up and forked the project a couple of years ago. I&#x27;m using it for my evolutionary, immutable data store SirixDB[2], which stores the entire history of your JSON data in small-sized snapshots in an append-only file (tailored binary format similar to BSON). It&#x27;s exceptionally well suited for audits, undo operations, and sophisticated analytical time travel queries.<p>I&#x27;ve changed a lot of stuff, such that Brackit is getting more and more compatible with the JSONiq query language standard, added JSONiq update primitives, array slices as known from Python and fixed several bugs. Furthermore, I&#x27;ve added interfaces for temporal data stores, temporal XPath axis to navigate not only in space, but also in time and temporal extension functions in SirixDB, index rewrite rules, etc. pp.<p>As Brackit can query XML, you&#x27;re of course able to transform XML data to JSON and vice versa.<p>Moshe and I are working on a Jupyter Notebook &#x2F; Tutorial[3] for interactive queries.<p>We&#x27;re looking forward to your bug reports, issues, and questions. Contributions are, of course, highly welcome. Maybe even implementations for other data stores or common query optimizations.<p>Furthermore, we&#x27;d gladly see further (university-based?) research.<p>It should, for instance, be possible to add vector instructions for SIMD instructions in the future, as the query engine is already set-oriented and processes sets of tuples for the so-called FLWOR expressions (see JSONiq). Brackit rewrites FLWOR expression trees in the AST to a pipeline of operations to port optimizations from relational query engines for efficient join processing and aggregate expressions. Furthermore, certain parts of the queries are parallelizable, as detailed in Sebastian&#x27;s thesis. We also envision a stage for the compiler to use distributed processing (first research used MapReduce, but we can now use better-suited approaches, of course).<p>Kind regards<p>Johannes<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;sirixdb&#x2F;brackit" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sirixdb&#x2F;brackit</a><p>[2] <a href="https:&#x2F;&#x2F;sirix.io" rel="nofollow">https:&#x2F;&#x2F;sirix.io</a> | <a href="https:&#x2F;&#x2F;github.com&#x2F;sirixdb&#x2F;sirix" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sirixdb&#x2F;sirix</a><p>[3] <a href="https:&#x2F;&#x2F;colab.research.google.com&#x2F;drive&#x2F;19eC-UfJVm_gCjY--koOWN50sgiFa5hSC" rel="nofollow">https:&#x2F;&#x2F;colab.research.google.com&#x2F;drive&#x2F;19eC-UfJVm_gCjY--koO...</a>