Blog (page 5 of 7)

Stuff Happens: Fixing Bad Data in Datomic

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.

Read more

Datomic Adaptive Indexing

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.

Read more

Datomic Lookup Refs

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).

Read more

Schema Alteration

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

Read more

Datomic 2013 Recap

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

Read more

Cassandra Support

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.

Read more

Using IAM Roles with Datomic on AWS

With today’s Datomic release, you can use IAM roles to manage permissions when running in AWS.

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.)

Read more

Datomic Pro Starter Edition

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

Read more

Datomic Console

[Update: Watch the intro video.]

The Datomic Console is a graphical UI for exploring Datomic databases.

The Datomic Console interface: a schema tree and data sources on the left; Query, Entities, Transactions, and Indexes tabs with a query builder and results pane on the right.

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.

Read more

The Transaction Report Queue

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:

Read more
Previous 5 of 7 Next