Datomic

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

Real-World Datomic: An Experience Report

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. Se foredraget

The Functional Database

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». Se foredraget

Keep Chocolate Love Atomic

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. Les artikkelen

Våre bloggposter

Referentially Transparent CRUD

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

Annotating Datomic transactions

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

Querying across Datomic databases

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

Datomic: The most innovative DB you've never heard of

Alt for få utviklere kjenner til Datomic, som på en måte er bedre enn man har kapasitet til å forestille seg før man har prøvd den litt selv. Les posten

Våre presentasjoner

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. Se video

WTF is Datomic?

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

The imminent revolution of functional append-only databases

I de fleste domener har gammel data høy verdi. Det bør ikke være ditt ansvar å løse dette manuelt med tradisjonelle muterbare databaser. Få en introduksjon til ny grensesprengende database-teknologi som løser dette problemet for deg. Se video

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. Se video

Open source

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