Tiny and Efficient Graph Abstractions
tinygraph is a modern approach for working with compact graphs. Imagine the routing graph for continental-scale street networks with street segments, intersections, and turns; or the web graph of websites and how they are interlinked.
We work in the open and you can contact us if you want to get involved:
Graph Abstractions for High Performance Use-Cases
We use a compressed sparse row format to represent graphs in compact and efficient ways: ideal for large scale and high-performance use-cases.
The trade-off is limited support for modification. The use-cases we support: build a graph, work on the graph, and potentially build new graphs from there.
Graph Compression makes Graphs Small and Compact
For compression we use techniques like: succinct data structures, storing deltas in vbyte format, and permuting graphs based on space filling curves.
Compressed graphs not only have a much smaller footprint, but we also keep an eye on viability and practicality: this is not a pure research project.
Built for Modern Hardware and Instruction Sets
Vector instruction sets are widely deployed with AVX2 available for 10+ years by now: we target modern hardware for efficiency gains at no cost.
We provide scalar fallbacks and baseline implementations in case vector instructions are not supported: at the cost of runtime efficiency.
Stable Library allows for Language Bindings
We provide a stable API and ABI using semantic versioning: a stable ABI allows for simple shared library upgrades across minor versions.
On top of the stable API and ABI we provide bindings to other languages: they come with their own stability and support guarantees.
Compact Graph File Format for Portable Graphs
We provide a file format for storing large graphs effectively and efficiently and for sharing graphs in a portable and compact way.
The tinygraphio file format stores a directed (or bidirectional) graph in a compressed sparse row format for a compact representation. The on-disk representation of the compressed sparse row graph is based on Protocol Buffers.