Hi guys,

independently from the ongoing work on the txn layer, I'd like to start a thread of discussion about the path we selected, and the other possible options.

Feel free to express your opinion here, I'll create a few items I'd liek to see debated.

1) Introduction

We badly need to have a consistent system. The fact is that the current trunk - and I guess this is true for all the released we have done so far) suffers from some serious issue when multiple modifications are done during searches. The reason is that we depend on a BTree implementation that exposes a data structure directly reading the pages containing the data, expecting those pages to remain unchanged in the ong run. Obviously, when we browse more than one entry, we are likely to see a modification changing the data...

2) txn layer

There are a few way to get this problem solved :
- we can have a MVCC backend, and a protection against concurrent modifications. Any read will always succeed, as each read will use a revision and only one. - we can also read fast the results and store them somwhere, blocking the modification until the read is finished. - or we can keep a copy of the modified elements within the original elements, until the seraches that use those elements are finished.

(there are probably some other solutions, but I don't know them)

AFAICT, the transaction branch is implementing the third solution, keepong the copy of modified elements in memory, so that they can be sent back to the user.

None of those solution are free of drawbacks.

I think that the first approach, even if it implies we forces a serialization of the writes, is the best solution. The rational, AFAICT, is that we don't have to deal with the way the backend keep versions of elements, this is not our business. Plus keeping the write serialized guarantees that we won't compromized the backend.

At this point, I'd like we discuss all those options, whatever we are currently working on.

3) cross-partition vs single partition protection

Atm, we are working on a cross partition system. That means we protect all the partitions at the same time : moving an entry from one partition to another one will be done completely, or reverted.

I'm not sure we need such a feature. I don't see what it brings, and even if it brings some advantages, I'm not sure we need such a feature now.

Not having to add a txn layer above the partitions is way easier to implement.

Here, too, I'd like we discuss our options, and the pros and cons of using a txn layer on top of single partitions instead of
muliple partitions.



ok, this is probably enough elements we have to discuss. You turn :)


--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to