Blog (page 5 of 7)
Stuff Happens: Fixing Bad Data in Datomic
19 August 2014
Oops! You just put some bad data in your system, and now you need a way to clean it up. In this article, we look at how to recover from data errors. Along the way, we will explore how Datomic models time.
A Motivating Example
ACME Co. buys, sells, and processes things. Unfortunately, their circa-2003 web interface is not a shining example of UI/UX design. Befuddled by all the modal screens, managers regularly put bad data into the system.
In fact, manager Steve just accidentally created an inventory record showing that ACME now has 999 Tribbles. This is ridiculous, since everyone knows that the CEO refuses to deal in Tribbles, citing "a bad experience". In a rather excited voice, Steve says "Quick, please delete the last entry added to the system!"
As is so often the case, job one is to carefully interpret a stakeholder’s request. In particular, the words "delete", "last", and "entry" all warrant careful consideration.
Datomic Adaptive Indexing
24 March 2014
We are pleased to announce today new Adaptive Indexing support for Datomic. Adaptive indexing involves both a new index format and algorithm for how indexes are maintained. It should prove especially beneficial to those with large databases, high write loads, or large imports.
Datomic Lookup Refs
13 February 2014
Datomic's new lookup refs provide an easy way to identify entities by domain unique identifiers.
Rationale
Datomic supports several approaches to identity, including internal identifiers (entity IDs that are unique within a database) and external identifiers (domain attributes that are designated to be :db.unique/identity). Lookup refs provide a concise data representation that accords to external ids the powers of internal ids, and can be used interchangeably with internal ids in the Datomic API. This is powerful, since often, e.g. in the front-end of a system or during imports, you already have the external ids in hand. With lookups refs you can often avoid having to incorporate a lookup in application code since the lookup will be done implicitly when resolving the lookup ref (thus the name).
Schema Alteration
23 January 2014
Datomic is a database that has flexible, minimal schema. Starting with version 0.9.4470, available here, we have added the ability to alter existing schema attributes after they are first defined. You can alter schema to
Datomic 2013 Recap
08 January 2014
2013 was a great year for Datomic. The value of a flexible information model and immutable data have proven themselves time and again. Customers have built a variety of powerful systems, taking advantage of
-
ACID transactions
-
pluggable SQL/NoSQL/cloud storage
-
complete access to the history of information
-
the Datalog query language
-
elastic read scalability
-
a granular information model
Cassandra Support
18 December 2013
We are pleased to announce alpha support for Cassandra as a storage service for Datomic, now available in version 0.9.4384.
Cassandra is an elastically scalable, distributed, redundant and highly-available column store. Recent versions of Cassandra added support for compare-and-swap operations via lightweight transactions using an implementation of the Paxos protocol. Datomic leverages this mechanism to manage a small number of keys per database that require coordinated access, while the bulk of a database’s content is written as immutable data to a quorum of replicas in the cluster.
Using IAM Roles with Datomic on AWS
25 November 2013
Motivation
Datomic’s AWS support has been designed according to the principle of least privilege. When running in AWS, a Datomic transactor or peer needs only the minimum permissions necessary to communicate with various AWS services. These permissions are documented in Setting Up Storage Services.
But you still need some way to install these minimal permissions on ephemeral virtual hardware. Early versions of AWS left this problem to the developer. Solutions were tedious and ad hoc, but more important they were risky. Leaving every application developer the task of passing credentials around is a recipe for credentials lying around in a hundred different places (or even checked into source code repositories.)
Datomic Pro Starter Edition
08 November 2013
|
Note
|
Datomic is Free. The pricing and licensing information in this blog post is outdated. |
We are happy to announce today the release of Datomic Pro Starter Edition, enabling the use of Datomic for small production deployments at no cost.
Datomic Pro Starter Edition features most benefits of Datomic Pro:
-
Support for all storages
-
A perpetual license with 12 months of updates included
-
Support for the full Datomic programming model
-
Datomic Console included with download
Datomic Console
29 October 2013
[Update: Watch the intro video.]
The Datomic Console is a graphical UI for exploring Datomic databases.
It supports exploring schema, building and executing queries, navigating entities, examining transaction history, and walking raw indexes. The Datomic Console is included in Datomic Pro, and is available as a separate download for Datomic Free users.
The Transaction Report Queue
11 October 2013
Summary: Functional databases such as Datomic eliminate the burden of deciding what information a downstream observer needs. Just give 'em everything, lazily.
The Transaction Report Queue
In Datomic, you can monitor all transactions. Any peer process in the system can request a transaction report queue of every transaction against a particular database.
TxReportWatcher is a simple example of this. It watches a particular attribute in the database, and prints the entity id and value whenever a change to that attribute appears. The essence of the code is only a few lines of Java: