Question

Am I understanding this correctly?

http://docs.datomic.com/transactions.html

You can set :db/txInstant explicitly, overriding the transactor's clock time. When you do, you must choose a :db/txInstant value that is not older than any existing transaction, and not newer than the transactor's clock time. This capability enables initial imports of existing data

Does this mean I can't add facts into datomic that are older than last transaction in a way that the queries as-of will work?

This seems to be a huge restriction. What to do when I interface with other system? For example I may get data about order from yesterday, but clerk only got time to enter it into system today. If somebody entered any facts today I won't be able to add that old data?

Is adding an explicit time attribute and using it in all queries the only option?

Was it helpful?

Solution

Unfortunately, when you have an application-driven notion of time i.e. the "recorded" time at which some event that you are transacting "now" occurred, you also need an application-driven query mechanism. Look at a similar thread in the Datomic google's group.

So the answer is yes, you'll have to explicitly handle that "recorded" time.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top