Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - sodapop

Pages: [1]
General Discussion about just::thread / Re: MVCC
« on: March 05, 2014, 07:42:12 PM »
MVCC at the simplest form should work as follows:
1) All threads/accessors should be able to read the map concurrently at any given time with seperate isolation levels (read_committed, dirty_read etc)
2) Nodes do not ever get physically deleted unless it is done by a cleanup operation.
3) When a node is modified, technically the code simply inserts a new node with a timestamp. the timestamp is what tells which node is an older version of another node (i.e. technically deleted).
4) When an accessor is trying to read while another operation is inserting a newer version on an existing node, depending on the isolation level the older version gets read if the isolation level is dirty else the accessor should block until the write operation completes i.e. if the reader is using a read_committed isolation level.

I am open to discussing offline to help me achieve this using the concurrent map in the just::thread library.

Here as well, we could use some more documentation and explaination of how to handle this situation while iterating several million records such that we can skip the node if it has beeen deleted.

General Discussion about just::thread / Re: MVCC
« on: March 05, 2014, 05:03:17 PM »
Is there anyplace I can read more about how the map internally handle concurrency? We are trying to implement multi version concurrency control. Without looking at the internal implementation of how the data structure implements lock free writing, it would be impossible for us to try and implement MVCC. Your thoughts on this will be very helpful. Let me know if this is something we can discuss offline.

Well as of Now We do not need more than 200. However it is imperative that we do not design a piece of software knowing that there is a scalability restriction that cannot be overcome if and when needed.

Does the jss::concurrent_map handle the issue with iterator invalidation upon calling insert or erase?

I read through the justthread documentation for the jss::concurrent_map and it said that it can allow concurrent access from 200 connections. What imposes the 200 limit? Can that be increased?

General Discussion about just::thread / MVCC
« on: March 04, 2014, 07:14:43 PM »
Is there any documentation on how to implement MVCC in a jss::concurrent_map? The whole idea is to not lock the map for writing when there might be multiple threads reading from the map.

Is there anyone on the forums who knows how to serialize a jss::concurrent_map? Are there any built in functions to do this?

Pages: [1]