#ReleaseSunday πŸŽ‰ Quite a few https://thi.ng/column-store updates over the past month, including further performance optimizations, more tests and documentation updates...

Just also added a small section and diagram illustrating the extensive use of bit-fields and bitmap-based indexes to optimize query processing and the stepwise narrowing of result sets in multi-term queries. Depending on column configuration and query term/operator type, individual rows often do not need to be visited/checked at all (only their bitfields are combined). But even if a traversal is necessary, the use of bitfields allows the engine to only having to check rows which have already been pre-selected by previous terms in the query. Apart from some exceptions, no interim result arrays are created. Queries are also short circuiting, i.e. terminate the moment a sub-term does not produce any results...

Happy coding! :)

#ThingUmbrella #Database #Query #Optimization #Bitfield #OpenSource #TypeScript #JavaScript

An additional improvement is that registers can now be defined inline in markdown code blocks, or can be referenced from an external TOML file that can contain multiple register definitions.

The latter is useful to be able to reference the same register diagram from multiple locations - so the chapter on the EGA can discuss a register in-depth, but the same register can be displayed in the appendix for quick reference without scrolling through a bunch of paragraphs.

When the base register definition is updated, both SVGs will update. And the cool thing is the register TOML reference becomes kind of a standalone register reference that could be used by anybody.

Here's what the "EGA Registers" appendix source looks like now:

## External Register Details

{{#bitfield ega_registers.toml#miscellaneous-output-register}}

{{#bitfield ega_registers.toml#feature-control-register}}

{{#bitfield ega_registers.toml#input-status-register-0}}

#HowToThing #023 β€” Responsive & reactive image gallery with tag-based Jaccard similarity ranking/filtering using https://thi.ng/bitfield, https://thi.ng/rstream & https://thi.ng/rdom

A quite common comment about #ThingUmbrella is that people often have little idea what some of the ~185 packages are even good/intended for and/or how to synthesize solutions from these small, individual building blocks. IMHO this is less about these packages themselves and more down to existing blank spots about the underlying concepts, algorithms and their potential role/utility in a larger problem domain... So I very much hope this new example is also useful in this respect!

Alas, the full code for this got pretty long and contains a lot more UI stuff. I'm intending to develop this further for the new homepage to browse all ~135 #ThingUmbrella examples (and maybe even for parts of the https://thi.ng website itself)... For those of you interested in more "advanced" https://thi.ng/rdom examples, do check it out!

Background info:
https://en.wikipedia.org/wiki/Jaccard_index

Demo:
https://demo.thi.ng/umbrella/related-images/

Full source code:
https://github.com/thi-ng/umbrella/tree/develop/examples/related-images/src/

The important parts re: using compact binary encoding, bitfields & Jaccard similarity to find related items are here:

https://github.com/thi-ng/umbrella/blob/fc5db1c7a2b9083b40e9be5d6002db937b5a8267/examples/related-images/src/data.ts#L191-L225

#ThingUmbrella #Tagging #Statistics #Similarity #Ranking #Bitfield #TypeScript #JavaScript #UI #Frontend #Reactive #Tutorial