tiny­graph

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:

  1. github.com/tinygraph/tinygraph
  2. github.com/tinygraph/tinygraphio
  3. hello@tinygraph.org

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.