Recent Posts
Archives

Posts Tagged ‘TimeTravel’

PostHeaderIcon [KotlinConf2018] Discovering Datomic: August Lilleaas’s Case for an Innovative Database with Kotlin

Lecturer

August Lilleaas is a full-stack developer and consultant in Oslo, working with SQL, Datomic, JVM, Clojure, and React. He leverages Kotlin for client projects. Relevant links: Personal Blog (publications); LinkedIn Profile (professional page).

Abstract

This article explores August Lilleaas’s introduction to Datomic, a unique database with single-threaded writes and client-side queries. Set in Kotlin-driven development, it examines Datomic’s time-travel and storage-agnostic design, inspired by BigTable and VoltDB. The analysis highlights its trade-offs, contextualized in data-intensive applications, with implications for history queries and scalability.

Introduction and Context

August Lilleaas presented Datomic at KotlinConf 2018, emphasizing its unconventional design. Unlike traditional databases, Datomic writes to external stores, runs queries client-side, and supports time-travel. Lilleaas, a Kotlin user, clarified his independence from Datomic’s creators. This narrative unfolds where developers seek flexible databases for Kotlin applications, leveraging its JVM compatibility.

Methodological Approaches to Datomic

Datomic’s writer is single-threaded, capping write throughput but simplifying consistency. It stores data in BigTable or other backends, with no native storage. Queries execute on clients, using indexes for efficiency. Time-travel allows historical queries, supporting “real updates” that preserve past states. Lilleaas demonstrated Kotlin queries, leveraging Datomic’s API.

Analysis of Innovations and Features

Datomic innovates with time-travel, enabling GDPR-like compliance. Client-side queries reduce server load, unlike SQL databases. Compared to MongoDB, Datomic’s structured API suits Kotlin’s type safety. Limitations include proprietary nature and write ceilings, mitigated by cloud offerings.

Implications and Consequences

Datomic implies flexible data modeling, ideal for history-sensitive apps. Its trade-offs suit read-heavy systems, enhancing Kotlin’s data layer.

Conclusion

Lilleaas’s advocacy reveals Datomic’s potential as a Kotlin-friendly database, balancing innovation with practical trade-offs.

Links