Datomic Pro and Datomic Cloud are now FREE!

Datomic Local is Released

The Datomic team is excited to announce the launch of Datomic Local under the Apache License 2.0. Datomic Local is a library that is both embeddable and redistributable. It is a lightweight version of Datomic, designed to be easily embedded within applications and freely redistributed. Datomic Local supports the Client API, making it an excellent choice for small single-process applications and for testing systems that are based on the Datomic Client API.

What is new?

Datomic Local is a lightweight version of Datomic backed by local storage that supports the Client API. The Datomic Local and supporting binaries are released under the Apache License 2.0 license.

How to get it

Datomic Local is available on Maven Central.

Use cases

The Datomic Local version of Datomic is indicated for:

  • People who want to write libraries that depend on Datomic

  • People who want an embedded DB

  • Cloud users who want to dev locally

  • People who already use dev-local

FAQ

What is Datomic Local?

Datomic Local is a lightweight version of Datomic backed by local storage which supports the Client API.

What changed?

Datomic Local is a library, embeddable, and redistributable. Datomic Local replaces dev-local.

How to get Datomic Local?

Datomic Local is available on Maven Central.

What changes in terms of licensing?

The Datomic Local binary is available under the Apache 2.0 License, which means that it is possible to redistribute it.

  • People who want to write libraries that depend on Datomic

  • People who want an embedded DB

  • Cloud users who want to dev locally

  • People who already use dev-local

What happened to Datomic Free?

If you are used to using Datomic Free, use Datomic Pro. If you want a redistributable, embeddable Datomic, use Datomic Local.

What is the difference between Datomic Cloud, Datomic Local, and Datomic Pro?

Datomic Cloud is tightly integrated with AWS. It supports only client access. Datomic Cloud has ions, which allows users to run entire applications on Datomic, with reproducible deployment, elastic autoscaling, and integration via AWS Lambda events and AWS API Gateway.

Datomic Pro is a distributed database designed to enable scalable, flexible applications running on-premises or in the cloud. It is fully designed for use against multiple storages in large-scale, multi-user systems.

Datomic Local is a lightweight version of Datomic that is embeddable, redistributable, and supports the Client API. It is well suited for single-process applications and for testing Client API-based Datomic systems.

Is Datomic Local open source?

No. The binaries are Apache 2.0, as with other versions of Datomic.

..

Datomic Cloud is Free

Nubank is excited to announce today that Datomic Cloud is also now available free of licensing fees, and the Datomic binaries are being released under the Apache 2.0 license. Starting with this version, Datomic Cloud is now easier to get. To set up Datomic Cloud, check the instructions on how to get started. We aim to make Datomic even more useful to more people in more situations. We are looking forward to expanding Datomic and Clojure worldwide!

FAQ

What’s changing for customers?

Moving forward, we are making the software easily available to everyone, at no cost. As of version 995-9204 there will no longer be licensing fees associated with your use of Datomic Cloud.

All current agreements and support are continued in full effect. We will continue to offer paid enterprise support.

If you are interested in continuing support, and or leveraging the new licensing call us.

What if I’m on an older version of Datomic Cloud?

Customers on versions of Datomic Cloud earlier than 995-9204 may continue to be charged fees associated with Datomic Cloud until they upgrade.

Why did you choose the Apache 2.0 license?

We want to make Datomic more useful to more people in more situations. The Apache 2.0 license provides benefits to Datomic users in the areas of copyright, patent, redistribution, and more — just as it does for countless other projects.

Is it Open Source?

No. Datomic binaries are provided under the Apache 2 license which grants all the same rights to a work delivered in object form.

Datomic will continue to be developed at Nubank, where it is a critical piece of our infrastructure.

Will Pro support (2 day SLA business hour) be provided?

Yes, through the duration of your current license term. Moving forward, contact us if you are interested in an Enterprise Support agreement.

Can I now run Datomic Cloud off marketplace?

Yes.

..

Datomic is Free

Nubank is excited to announce today that we are making all editions of Datomic available free of licensing fees. The Datomic binaries are being released under the Apache 2.0 license and will be readily available for direct download and use via Maven Central - no signup required. Datomic Cloud will be available on AWS Marketplace with no additional software cost.

We are doing this to make Datomic more useful to more people in more situations, and look forward to expanding the Datomic and Clojure community as a result.

FAQ

What’s changing for customers?

Moving forward, we are making the software easily available to everyone, at no cost.

All current agreements and support are continued in full effect. We will continue to offer paid enterprise support.

If you are interested in continuing support, and or leveraging the new licensing call us.

Which editions of Datomic will be free?

All of them. Datomic Pro is free of licensing fees, and now Datomic Cloud is available off AWS Marketplace with no associated license fees.

Why did you choose the Apache 2.0 license?

We want to make Datomic more useful to more people in more situations. The Apache 2.0 license provides benefits to Datomic users in the areas of copyright, patent, redistribution, and more — just as it does for countless other projects.

Is it Open Source?

No. Datomic binaries are provided under the Apache 2 license which grants all the same rights to a work delivered in object form.

Datomic will continue to be developed at Nubank, where it is a critical piece of our infrastructure.

Will Pro support (2 day SLA business hour) be provided?

Yes, through the duration of your current license term. Moving forward, contact us if you are interested in an Enterprise Support agreement.

Can I now run Datomic Cloud off marketplace?

..

Implicit Partitions

If you have an application that is struggling with performance, it might be due to poor data locality, the physical distribution of relevant information. A query that is searching for sparsely distributed data will find few results per storage read. Conversely, queries can efficiently slurp relevant data when it is densely colocated. Datomic’s partitions allow applications to group entities together and gain control over locality. Entities that share a partition will be colocated in the E-leading indexes, EAVT and AEVT. Because each partition requires a name and installation prior to its use, it can become cumbersome to build schemes that use many partitions.

Today’s release of Datomic On-Prem includes a new feature: Implicit Partitions. These partitions are identified by an integer, and they are usable without an installation step. There are 524288 (2^19) implicit partitions in each Datomic database, and these facilitate the use of algorithmic partition assignment strategies, e.g. deterministically assigning each customer to a particular partition, or assigning time-windowed data to different partitions.

Applications can transact entities into implicit partitions by passing one to d/tempid:

(d/transact conn [{:db/id (d/tempid (d/implicit-part 55))
                   :movie/title "The Great Gatsby"}])

We are also introducing two new transaction data directives that facilitate partition assignment. To request put a new entity into a particular partition, you can include its tempid in the :db/force-partition map. This can appear anywhere in a transaction map form. Here is the same transaction using this directive with a string tempid:

(d/transact conn [{:db/id "movie"
                   :movie/title "The Great Gatsby"
                   :db/force-partition {"movie" (d/implicit-part 55)}}])

The :db/match-partition directive says that an entity should have the same partition as another entity. Here, both items will be in the same partition as its order, which is in implicit partition 15555:

(d/transact conn
            [{:db/id    "order"
              :order/id 123
              :order/items ["item1" "item2"]}

             {:db/id     "item1"
              :item/name "cereal"
              :item/sku  "A150"}

             {:db/id     "item2"
              :item/name "milk"
              :item/sku  "T770"}

             {:db/force-partition {"order" (d/implicit-part 15555)}
              :db/match-partition {"item1" "order"
                                   "item2" "order"}}])

To learn more about implicit partitions, read the documentation for Implicit Partitions and Controlling Partition Assignment, and the API documentation for Datomic On-Prem.

..

Query Stats

Today’s release of Datomic On-Prem, and coming soon in Cloud, includes a new feature: query-stats.

query-stats is a new feature that gives users visibility into the decisions made by the query engine while it processed your query. Datomic users can leverage the information returned by query-stats to find the optimal clause ordering for a query as well as gain visibility into various query components including query clauses, query rules, and query expressions.

For example, given the following query:

{:find  [(count ?artist-name)]
 :where [[?release :release/name ?release-name]
         [?release :release/artists ?artist]
         [?artist :artist/name ?artist-name]]}

The following query-stats are returned:

{:ret         [[4587]],
 :query-stats {:query  {:find  [(count ?artist-name)],
                        :where [[?release :release/name ?release-name]
                                [?release :release/artists ?artist]
                                [?artist :artist/name ?artist-name]]},
               :phases [{:sched   (([?release :release/name ?release-name]
                                    [?release :release/artists ?artist]
                                    [?artist :artist/name ?artist-name])),
                         :clauses [{:clause [?release :release/name ?release-name], :rows-in 0, :rows-out 11434, :binds-in (), :binds-out [?release], :expansion 11434, :warnings {:unbound-vars #{?release ?release-name}}}
                                   {:clause [?release :release/artists ?artist], :rows-in 11434, :rows-out 4600, :binds-in [?release], :binds-out [?artist]}
                                   {:clause [?artist :artist/name ?artist-name], :rows-in 4600, :rows-out 4587, :binds-in [?artist], :binds-out [?artist-name]}]}]}}

This output can be more easily interpreted using REBL:

40473ee8 8ba1 480f 92ed 28af07fe858f

To learn more about query-stats and other enhancements:

Read the release announcement for Datomic On-Prem.

Read the API documentation for Datomic On-Prem.

..


1 of 13