Dear Datomic support,
After I tried to excise some of specific entities and got the transact success result, found that the excision doesn’t take effect (space did not free up, can still touch the entities) even if i ran the d/request-index, d/sync-index, d/gc-storage.
Could you please help to advice the way to excise entities(4k+) from datomic and make it take effect? Thanks.
Datomic On-prem’s Excision is unsuitable for the error-correcting task, as it does not restore any prior view of the facts. It’s also not suitable as a disk size cleanup and should be used sparingly as excision will put a substantial burden on background indexing.
Is your goal here to clear up space or to removing data for privacy reasons/removing data older than some domain-defined retention period?
If your goal is to free up space on disk, could you share some more information about your system?
What is your current size on Disk?
What is the size of your Datomic level backup?
can still touch the entities
See docs below. Excision is not transactional and you can use syncExcise to coordinate peers:
Note that excision is a special operation that happens outside the timeline of Datomic history, removing data across all of history as if the data never happened. While the excise request itself is transactional, the excision operation is not transactional – the effect of excision is a background operation that occurs during the first indexing job after an excision transaction. More than one excision can occur between indexing jobs, and you should avoid attempting to repeatedly excise/requestIndex in an attempt to make excision feel synchronous. It’s not. If you need to coordinate with a database that is guaranteed to have your excision, you can accomplish this with syncExcise.