datahike

https://datahike.io/, Join the conversation at https://discord.com/invite/kEBzMvb, history for this channel is available at https://clojurians.zulipchat.com/#narrow/stream/180378-slack-archive/topic/datahike
alekcz 2020-05-22T20:31:51.213400Z

@whilo two questions. 1. Should the first byte of the meta also contain the version? 2. Why don't we store the version konserve version in the meta?

alekcz 2020-05-22T20:51:17.215Z

One more question @whilo in string stores (ser/string-serializer) do we store the version as U+0001 or "1"

whilo 2020-05-22T21:21:49.216600Z

@alekcz360 The version is describing the layout of the binary object and therefore should be attached to each object. It is also independent of the serializer, because we need to determine whether we need to migrate an object before we want to read it. So it should always be a binary byte, I think. (Unless you see problems.)

alekcz 2020-05-22T21:44:41.221400Z

@whilo lemme just make sure I understand.

;in a store where meta and data can be separated but stored atomically
{:data <version-as-byte + serialized-data>
 :meta <serialized-meta>}

;in a store that requires all data in one location
{:data <version-as-byte + meta-length + serialized-meta + serialized-data>}
Is this correct ☝️ ?

whilo 2020-05-22T21:47:37.221900Z

I would prepend the version-as-byte also to the metadata.

whilo 2020-05-22T21:47:52.222200Z

get-meta only touches it and it needs to know how to read it.

alekcz 2020-05-22T21:49:56.222800Z

Awesome. I'll be done with carmine and clutch tomorrow.

whilo 2020-05-22T21:54:45.224300Z

Very good, you are faster than we are 🙂. We will hopefully be done with the filestore (migration from our old formats is currently finished) and leveldb stores until Monday. I hope we can put out a konserve beta with the garbage collector bits next week and start some experiments for online GC on Datahike after that.