Datomic tar automatisk vare på gammel data for deg. Jo mer du skjønner om Datomic, jo oftere vil du oppdage at mange databaserelaterte problemer ikke er så unike som du kanskje trodde.

I og med at Datomic skiller seg radikalt fra andre databaser, er det keitete å oppsummere det hele med noen få setninger. Det krever mer enn to minutters skumlesing for å forstå hva slags problem Datomic løser.

Men for å liste opp noen kule ting:

  • Lesing og skriving er skilt helt fra hverandre. CQRS, altså.
  • All lesing skjer via et immutable database-objekt, ikke en flytende connection. Når du ber en connection om en database, vil du få den nyeste, og den vil aldri endre seg, så du kan kjøre spørringer i mange timer hvis du vil, uten noen form for synkronisering.
  • Du kan også be om databasen slik den så ut ved en gitt dato. Denne er også immutable når du har hentet den ut.
  • NOSQL, relasjonell, og ACID. Det går altså an å ha konsistent data uten SQL, hvem skulle trodd det?
  • Du kan gjøre spørringer på endringer gjort til dataene dine over tid.
  • Du kan lese ut transaksjoner fra databasen. Transaksjoner er altså ikke skjulte og interne, men spørrbare entiteter.
  • Transaksjoner kan tagges med din egen metadata, f.eks «hvem gjorde dette».

I hovedsak løser Datomic et viktig problem: for de fleste domener er gammel data verdifull, og bruker du Datomic, blir gammel data tatt vare på for deg, uten at du trenger å modellere det med sindige join-tabeller og annet snacks.

Den er også proprietær, med en ganske voldsom lisens. Heldigvis har Kodemakere bare brukt gratis-versjonen enn så lenge, så vi har lov til å bruke datomic til «nefarious purposes». Vi kan til og med blogge kritisk om Cognitect, firmaet bak Datomic. I motsetning til stakkarene som har punga ut. Betal-utgaven trenger man først og fremst når man skal skalere, gratis-versjonen er helt fin, stabil og trygg.

Våre anbefalinger

The Functional Database
Anbefalt av Kristian

Dette foredraget av Rich Hickey introduserer og forklarer ideene bak en funksjonell database. Hva om man distanserer seg fra tradisjonelle databaser og sier at data kun kan legges til? Betyr dette at man kan modellere data over tid? Og hva er egentlig fordelen med at data aldri endrer seg? Dette er noen av spørsmålene som blir besvart gjennom en presentasjon som utfordrer etablerte «sannheter».

Keep Chocolate Love Atomic
Anbefalt av Magnar

Stuart Halloway skriver om Datomic og hvordan vi så lett faller tilbake til destruktiv oppdatering, når vi med litt ynde kan legge til facts. Må leses av alle som skal bruke Datomic.

Real-World Datomic: An Experience Report
Anbefalt av Magnar

Craig Andera snakker om erfaringer med å bruke Datomic på et større prosjekt, og kommer med flere nyttige poenger underveis. Særlig bra er hans gjennomgang av indekser.

Våre foredrag

Introduksjon til hvordan i alle dager en immutable database kan funke, og hvorfor det er bra greier.

Datomic - the most innovative DB you've never heard of

Datomic is a strange database. The writer is single threaded. It writes to other databases and has no storage of its own. It has a completely different API for reads and writes. Queries runs on the client, not the server. Time travel is built in, and you can query the history of your database.

In this talk, you’ll learn where Datomic fits and for which use cases the above are good ideas, how Datomic actually invented very little and stands on the shoulders of BigTable and VoltDB, all using Kotlin, of course :)

I put 7 years of meal data in Datomic - Here's what I learned

Datomic is an append-only database, designed from the ground up with modern applications and hardware in mind. It never loses data, it has an RDF-like approach to schemas, it’s really fast, and it has a powerful query language borrowed from Prolog that expresses queries as data structures. In short: it’s pretty awesome.

Datomic - a functional database

Datomic is more than just nosql. The server only does writes, not queries. Reads from data and index happens via storage services, which can be mysql, riak, dynamo, and others. The queries happen on the client itself. The database is represented as an immutable data structure. You can at any point in time get your database as of e.g 2 weeks ago. This talk will explain how all of the above works, what «functional database» means, and which tradeoffs and benefits Datomic has chosen when compared to other database paradigms. Some experience in database concepts (ex: MVCC, dynamo style high write availability) and a general urge to know what happens under the hood is expected of the listener.

Vår fri programvare

  • datoms-differ - Et bibliotek for å finne diff mellom to txs a-la Datomic og DataScript

Våre blogginnlegg

Querying across Datomic databases

Et konkret eksempel på hvordan du kan gjøre datalog spørringer over flere databaser samtidig med Datomic.

Annotating Datomic transactions

En artikkel om Datomics transaksjoner, og hvordan de kan utvides med app-spesifik informasjon for bedre auditing og mer.

Referentially Transparent CRUD

Artikkel om hvordan Datomic lar deg implementere tradisjonell CRUD med referentially transparent funksjonell kode.