HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
julia-vscode
Salsa.jl
Julia2021–2021
julia-vscode / Salsa.jl

Salsa.jl

Discover this repository through its Hacker News conversations.

2Distinct people
2Mentions
0Explicit recommenders
74GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week2 dated mentions

Observed mentions: 2021-07-09 18:02:08 UTC to 2021-10-03 17:51:12 UTC. Weeks start Monday, UTC.

012021-07-05 00:00:00 UTC to 2021-07-12 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 52021-07-12 00:00:00 UTC to 2021-07-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-07-19 00:00:00 UTC to 2021-07-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-07-26 00:00:00 UTC to 2021-08-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-08-02 00:00:00 UTC to 2021-08-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-08-09 00:00:00 UTC to 2021-08-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-08-16 00:00:00 UTC to 2021-08-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsAug 162021-08-23 00:00:00 UTC to 2021-08-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-08-30 00:00:00 UTC to 2021-09-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-09-06 00:00:00 UTC to 2021-09-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-09-13 00:00:00 UTC to 2021-09-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-09-20 00:00:00 UTC to 2021-09-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-09-27 00:00:00 UTC to 2021-10-04 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsSep 27

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jul 52021-07-05 00:00:00 UTC2021-07-12 00:00:00 UTC101
Jul 122021-07-12 00:00:00 UTC2021-07-19 00:00:00 UTC000
Jul 192021-07-19 00:00:00 UTC2021-07-26 00:00:00 UTC000
Jul 262021-07-26 00:00:00 UTC2021-08-02 00:00:00 UTC000
Aug 22021-08-02 00:00:00 UTC2021-08-09 00:00:00 UTC000
Aug 92021-08-09 00:00:00 UTC2021-08-16 00:00:00 UTC000
Aug 162021-08-16 00:00:00 UTC2021-08-23 00:00:00 UTC000
Aug 232021-08-23 00:00:00 UTC2021-08-30 00:00:00 UTC000
Aug 302021-08-30 00:00:00 UTC2021-09-06 00:00:00 UTC000
Sep 62021-09-06 00:00:00 UTC2021-09-13 00:00:00 UTC000
Sep 132021-09-13 00:00:00 UTC2021-09-20 00:00:00 UTC000
Sep 202021-09-20 00:00:00 UTC2021-09-27 00:00:00 UTC000
Sep 272021-09-27 00:00:00 UTC2021-10-04 00:00:00 UTC101

What Hacker News says

2 sources
This is really hard to answer in a short comment, but I'll try to highlight a few things: - We use compute/storage separation as in Snowflake and Aurora. This means that data is stored in object storage (for example S3) and computing resources are transient. This is the de facto standard now for new database management systems. Systems that are not designed for object storage are gradually going to be less relevant. The Snowflake papers are a great resource on this ( http://pages.cs.wisc.edu/~yxy/cs839-s20/papers/snowflake.pdf ) . It's also a recurring topic in the CMU database talks. Our memory management is based on LeanStore and Umbra. - The database is entirely versioned with an immutable data structure, so read-only scaling does not require locking: you can provision new compute instances that work on a snapshot of the database that
Read the rest
is 100% guaranteed to be consistent. This means that you can run an analytical job on your production database with a 100% guarantee that the performance of your primary system is not impacted. For concurrent writes we aim to use incremental maintenance techniques. - All our data is indexed so that the WCOJ algorithms can do their job. Indexes maintenance can be expensive, so we have write-optimized data structures for that (B-epsilon trees - http://supertech.csail.mit.edu/papers/BenderFaJa15.pdf ). The performance of those is really good, and they can be compacted in the background. The combination of our graph normal form (narrow relations) and WCOJ addresses the index selection problem in a novel way. - We use new compiler architecture ideas to make everything live and demand-driven. Our framework for this is Salsa, which is open source ( https://www.youtube.com/watch?v=0uzrH2Ee494 and https://github.com/RelationalAI-oss/Salsa.jl ). - WCOJ are our work horse join algorithm. We have different query evaluation techniques, including JIT compilation and vectorization. For queries that do not require worst-case optimal joins the plans are similar to more conventional systems due to optimizations applied to the plan (talk: https://www.youtube.com/watch?v=C_mBEq_o4HE ) Graph workloads have a few interesting properties: 1) Analytical queries are often recursive. Systems like Neo4J do not really address this in general because the query language does not support general recursion. Instead, it offers bindings to algorithms implemented in Java. 2) Queries often do joins across many relations. 3) There is lots of skew. (2) and (3) are handled by WCOJ. For (1) we use algorithms similar differential dataflow. Differential Dataflow already has great proof points for graph analytical queries (mainly created by Frank McSherry) In the end, of course all that matters are the actual benchmarks. We are developed those for standard relational workloads (like TPC-H) and graph workloads (for example LDBC SNB, graph analytical workloads). It's a little too early for us to claim results at scale, but we have isolated proof points that the design works.
In Ask HN: Why are relational DBs are the standard instead of graph-based DBs?
That is a great world. But considering that we still do not really know how to write e.g. generic code that operates on both immutable and mutable arrays, I think Julia is not there yet. The other big thing missing in Julia that is IMO important here is more control over evaluation, like allowing lazy evaluation. You can build some of these features on top of Julia (e.g. https://github.com/RelationalAI-oss/Salsa.jl). Math is usually not written with computation in mind, so some algorithm might e.g. re-evaluate f(x) multiple times. Compiler optimizations can help in some cases, as can a "dynamic" solution like memoization/caching. But again, I don't think Julia is "there" yet.
In Concise algorithms written in Julia

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.