Datomic

Last updated
Datomic
Original author(s) Rich Hickey, Stuart Halloway, Justin Gehtland
Developer(s) Cognitect
Initial release2012;12 years ago (2012)
Stable release
1.0.7180 / July 11, 2024;2 months ago (2024-07-11)
Written in Clojure [1]
Type Datalog, NoSQL
License Apache 2.0 (binaries only) [2]
Website datomic.com

Datomic is a distributed database and implementation of Datalog. [3] [4] It has ACID transactions, joins, and a logical query language, Datalog. [5] [6] A distinguishing feature of Datomic is that time is a basic feature of data entities. [7]

Architecture

It has been designed for first-class use with JVM languages such as Java and Clojure. [8]

In its reference architecture, Datomic uses peers [9] and transactors [10] which run on the JVM.

Related Research Articles

<span class="mw-page-title-main">Java virtual machine</span> Virtual machine that runs Java programs

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow.

<span class="mw-page-title-main">SQLite</span> Serverless relational database management system (RDBMS)

SQLite is a database engine written in the C programming language. It is not a standalone app; rather, it is a library that software developers embed in their apps. As such, it belongs to the family of embedded databases. It is the most widely deployed database engine, as it is used by several of the top web browsers, operating systems, mobile phones, and other embedded systems.

Datalog is a declarative logic programming language. While it is syntactically a subset of Prolog, Datalog generally uses a bottom-up rather than top-down evaluation model. This difference yields significantly different behavior and properties from Prolog. It is often used as a query language for deductive databases. Datalog has been applied to problems in data integration, networking, program analysis, and more.

HotSpot, released as Java HotSpot Performance Engine, is a Java virtual machine for desktop and server computers, developed by Sun Microsystems which was purchased by and became a division of Oracle Corporation in 2010. Its features improved performance via methods such as just-in-time compilation and adaptive optimization. It is the de facto Java Virtual Machine, serving as the reference implementation of the Java programming language.

Music Player Daemon (MPD) is a free and open source music player server. It plays audio files, organizes playlists and maintains a music database. In order to interact with it, a client program is needed. The MPD distribution includes mpc, a simple command line client.

<span class="mw-page-title-main">Scala (programming language)</span> General-purpose programming language

Scala is a strong statically typed high-level general-purpose programming language that supports both object-oriented programming and functional programming. Designed to be concise, many of Scala's design decisions are intended to address criticisms of Java.

Google Developers is Google's site for software development tools and platforms, application programming interfaces (APIs), and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products.

In computer programming, a green thread is a thread that is scheduled by a runtime library or virtual machine (VM) instead of natively by the underlying operating system (OS). Green threads emulate multithreaded environments without relying on any native OS abilities, and they are managed in user space instead of kernel space, enabling them to work in environments that do not have native thread support.

The Dynamic Language Runtime (DLR) from Microsoft runs on top of the Common Language Runtime (CLR) and provides computer language services for dynamic languages. These services include:

<span class="mw-page-title-main">Da Vinci Machine</span> Sun Microsystems project

The Da Vinci Machine, also called the Multi Language Virtual Machine, was a Sun Microsystems project aiming to prototype the extension of the Java Virtual Machine (JVM) to add support for dynamic languages.

<span class="mw-page-title-main">Clojure</span> Dialect of the Lisp programming language on the Java platform

Clojure is a dynamic and functional dialect of the Lisp programming language on the Java platform.

<span class="mw-page-title-main">Rich Hickey</span> Computer programmer and creator of Clojure

Rich Hickey is a computer programmer and speaker, known as the creator of the Clojure programming language. Clojure is a Lisp dialect built on top of the Java Virtual Machine. He also created or designed ClojureScript and the Extensible Data Notation (EDN) data format.

Cucumber is a software tool that supports behavior-driven development (BDD). Central to the Cucumber BDD approach is its ordinary language parser called Gherkin. It allows expected software behaviors to be specified in a logical language that customers can understand. As such, Cucumber allows the execution of feature documentation written in business-facing text. It is often used for testing other software. It runs automated acceptance tests written in a behavior-driven development (BDD) style.

μTorrent Proprietary adware BitTorrent client

μTorrent, or uTorrent, is a proprietary adware BitTorrent client owned and developed by Rainberry, Inc. The "μ" in its name comes from the SI prefix "micro-", referring to the program's small memory footprint: the program was designed to use minimal computer resources while offering functionality comparable to larger BitTorrent clients such as Vuze or BitComet. μTorrent became controversial in 2015 when many users unknowingly accepted a default option during installation which also installed a cryptocurrency miner.

Eclipse Deeplearning4j is a programming library written in Java for the Java virtual machine (JVM). It is a framework with wide support for deep learning algorithms. Deeplearning4j includes implementations of the restricted Boltzmann machine, deep belief net, deep autoencoder, stacked denoising autoencoder and recursive neural tensor network, word2vec, doc2vec, and GloVe. These algorithms all include distributed parallel versions that integrate with Apache Hadoop and Spark.

<span class="mw-page-title-main">Fluent Design System</span> Design system created by Microsoft in 2017

Fluent Design System, officially unveiled as Microsoft Fluent Design System, is a design language developed in 2017 by Microsoft. Fluent Design is a revamp of Microsoft Design Language that includes guidelines for the designs and interactions used within software designed for all Windows 10 and Windows 11 devices and platforms. The system is based on five key components: light, depth, motion, material, and scale. The new design language includes more prominent use of motion, depth, and translucency effects.

TerminusDB is an open source knowledge graph and document store. It is used to build versioned data products. It is a native revision control database that is architecturally similar to Git. It is listed on DB-Engines.

The LogicBlox system is a commercial, declarative, incremental logic programming language and deductive database inspired by Datalog. The LogiQL programming language extends Datalog with several features, including stratified negation, aggregation, and a module system. LogicBlox has been used to build pointer analyses for Java.

References

  1. "Introduction | Datomic". docs.datomic.com. Retrieved 2024-10-03.
  2. "Datomic - Datomic is Free". blog.datomic.com. Retrieved 2024-10-03.
  3. Hickey, Rich (2013-02-01). "The Datomic Information Model" . Retrieved 2013-02-04.
  4. Halloway, Stuart. "Datomic: A New Database". The Strange Loop. Archived from the original on 2013-03-09. Retrieved 2013-02-04.
  5. "Datomic Rationale". Cognitect. Archived from the original on 2013-07-08. Retrieved 2013-02-04.
  6. Hunger, Michael. "Rich Hickey's Datomic embraces Cloud, intelligent Applications and Consistency" . Retrieved 2013-02-04.
  7. Kiel, Alexander (2013-02-05). "Datomic - A Functional Database" (PDF). Leipzig University.
  8. Hickey, Rich (2012-06-06). "The Design of Datomic".
  9. "Overview of Peers in Datomic".
  10. "Datomic Transactor" . Retrieved 2021-04-08.