Blog (page 6 of 7)
Datomic MusicBrainz sample database
01 July 2013
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
Component Entities
19 June 2013
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.
Using Datomic from Groovy, Part 1: Everything is Data
12 June 2013
In this post, I will demonstrate transacting and querying against Datomic from Groovy. The examples shown here are based on the following schema, for a simple social news application:
There are a number of more in-depth samples in the datomic-groovy-examples project on Github.
Sync
03 June 2013
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.
A Whirlwind Tour of Datomic Query
16 May 2013
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.
Excision
10 May 2013
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.
Riak and Couchbase Support
02 November 2012
We are pleased to announce today preliminary support for two new storage services for Datomic: Riak and Couchbase.
codeq
10 October 2012
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:
Datomic Monitoring and Performance
17 September 2012
I have just added a new section to the Datomic documentation on monitoring and performance. If you are tuning Datomic, it is a must-read.
REST API
06 September 2012