Blog (page 6 of 7)

Datomic MusicBrainz sample database

MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public. We are pleased to release a sample project that uses the MusicBrainz dataset to help people get familiar with using Datomic.

The MusicBrainz dataset makes a great example database for learning, evaluating, or testing Datomic for a couple of reasons:

  • It deals with a domain with which nearly everyone is familiar

  • It is of decent size: 60,438 labels; 664,226 artists; 1,035,592 album releases; and 13,233,625 recorded tracks

  • It comprises a good number of entities, attributes, and relationships

  • It is fun to play with, query, and explore

Read more

Component Entities

This post demonstrates Datomic's component entities, and highlights a new way to create components available in today’s release. You can follow along in the code via the sample project.

The code examples use Groovy, a JVM language that combines similarity to Java with concision. If you are a Java developer new to Groovy, you may want to read this first.

Read more

Sync

Background

Datomic's approach to updating peers uses a push model. Rather than have every read request route to the same server in order to get consistent data, data is stored immutably, and as soon as there is new information, all peers are notified. This completely eliminates polling any server. Thus, contrary to common presumption, when you ask the connection for the db value, there is no network communication involved: you are immediately given the local value of the db about which the connection was most recently informed.

Everyone sees a valid, consistent view. You can never see partial transactions, corruption/regression of timelines, causal anomalies etc. Datomic is always 'business rules' valid, and causally consistent.

Read more

A Whirlwind Tour of Datomic Query

Introduction

This tour is to help those new to Datomic understand Datomic’s built-in datalog by providing a simple domain and schema, and by walking through some use cases. For a more complete treatment of Datomic’s query capabilities, please take a look at the documentation.

Read more

Excision

Motivation

It is a key value proposition of Datomic that you can tell not only what you know, but how you came to know it. When you add a fact:

conn.transact(list(":db/add", 42, ":firstName", "John"));

Datomic does more than merely record that 42’s first name is "John". Each datom is also associated with a transaction entity, which records the moment (:db/txInstant) the datom was recorded.

Read more

codeq

Backstory

Programmer Sally: "So, what are you going to do today Bob?"

Programmer Bob: "I’m not happy with the file baz.clj residing in my/ns. So I’m going to go to line 96 and change 2 to 42. I’ve been thinking about deleting line 124. If I have time, I’m also going to insert some text I’ve been working on at line 64."

Programmer Sally: (what’s wrong with Bob?)

Short Story

codeq ('co-deck') is a little application that imports your Git repositories into a Datomic database, then performs language-aware analysis on them, extending the Git model down from the file to the code quantum (codeq) level, and up across repos. By doing so, codeq allows you to:

Read more

REST API

I’m pleased to announce that, starting with version 0.8.3488, Datomic now offers a REST API.

Read more
Previous 6 of 7 Next