whatisgithub

What is flatiron?

yogthos/flatiron — explained in plain English

Analysis updated 2026-05-18

27ClojureAudience · developerComplexity · 3/5Setup · moderate

In one sentence

A Clojure library that stores data in fast, memory-efficient columns so you can run SQL-like queries and analytics without a full database.

Mindmap

mindmap
  root((flatiron))
    What it does
      Columnar in memory storage
      SQL like queries
      Graph algorithms
    Tech stack
      Clojure
      JVM primitive arrays
      core-async
    Use cases
      Analyze in memory tables
      Group and aggregate data
      Run PageRank on data
    Audience
      Clojure developers
      Data engineers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Run fast group-by, filter, and aggregation queries on in-memory data in a Clojure project.

USE CASE 2

Build pivot tables from tabular data without adding a full embedded database.

USE CASE 3

Run graph algorithms like PageRank on data already loaded into memory.

USE CASE 4

Store and query dates, timestamps, and other custom types efficiently as plain numbers.

What is it built with?

ClojureJVMcore.async

How does it compare?

yogthos/flatirondynamic-alpha/ducktapereplikativ/katzen
Stars271916
LanguageClojureClojureClojure
Setup difficultymoderatemoderateeasy
Complexity3/53/53/5
Audiencedeveloperdatadeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires JDK 18 or later and is installed as a git dependency rather than through a package registry.

The README does not state a license for this repository.

So what is it?

Flatiron is a Clojure library for running fast analytical queries on data that lives in memory. It is aimed at Clojure programs that need to do grouping, filtering, sorting, and aggregation on reasonably large tables without pulling in a full embedded database. The key design choice is how it stores data. Standard Clojure code typically represents a table as a list of maps, one map per row. That works fine for a few thousand records but gets slow on larger datasets because each row is a separate object in memory with a lot of overhead. Flatiron instead stores each column as a plain Java primitive array: integers go into a long array, floating-point numbers into a double array, and so on. This means the computer can loop through the data without chasing pointers, and the JVM can optimize the inner loops into tight native code. The library processes data in batches of 1024 rows to reduce the cost of figuring out which operation to use on each pass. The query interface is a small set of functions and macros that look similar to SQL. You can filter rows with conditions (greater than, equals, and so on), group by one or more columns, compute aggregations like sum, average, count, minimum, and maximum, and create pivot tables. You can also run graph algorithms like PageRank on the same in-memory tables. The library has no external dependencies beyond one standard Clojure concurrency library and requires JDK 18 or later. Date and time values are stored as plain numbers under the hood (for example, a date is stored as the number of days since a fixed starting point) so they sort and compare correctly without creating extra objects. You can also define your own custom column types with the same approach. Flatiron is intended as a lightweight alternative to pulling in an embedded database when you just need to analyze some in-memory data in a Clojure project. It is installed via a git dependency entry in a Clojure project file.

Copy-paste prompts

Prompt 1
Help me add Flatiron as a git dependency in my deps.edn file.
Prompt 2
Show me how to build a table with Flatiron and run a group-by aggregation on it.
Prompt 3
Explain how Flatiron's columnar storage makes queries faster than a list of maps in Clojure.
Prompt 4
Walk me through defining a custom column type in Flatiron for my own domain values.

Frequently asked questions

What is flatiron?

A Clojure library that stores data in fast, memory-efficient columns so you can run SQL-like queries and analytics without a full database.

What language is flatiron written in?

Mainly Clojure. The stack also includes Clojure, JVM, core.async.

What license does flatiron use?

The README does not state a license for this repository.

How hard is flatiron to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is flatiron for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.