Hi guys, in order to implement the transactions for persisted B-tree, I have to modify the way we serialize them on disk.
ATM, we use a heavy B-tree header which contains all the B-tree information. This was ok as soon as we don't support transaction, and specifically versions. As soon as we want to support more than one version for a given B-tree, we have to create a new B-tree header for each single revision. It's now clear that we don't want to duplicate data like the B-tree name, the serializers, the pageSize and the duplicate flag, as they will never change. The only values we want to store in each B-tree header are the revision, the number of elements, and the rootPage offset. That will have some impact on the storage. The BtreeOfBtrees will now contain reference to B-tree headers, and we will store the B-tree static information into page which will never be updated. Every added element will create a new B-tree header pointing to the new rootPage. This is not that a big change, but it's mandatory. -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com
