delete and update problem

21 views
Skip to first unread message

Mohammadreza

unread,
Jul 5, 2014, 3:43:48 AM7/5/14
to omid-p...@googlegroups.com
When I delete a row by omid 2 things is problem :
1-That row must putted by omid
2-Only Delete the value
-------
also When I want to update a row by omid 
That row must putted by omid

Maysam Yabandeh

unread,
Jul 5, 2014, 1:30:08 PM7/5/14
to Mohammadreza, omid-p...@googlegroups.com
About point 1 you cannot mix transactional and non-transactional traffic in Omid. So, all the data must be inserted/deleted/updated via Omid. If you want to run Omid on top of an existing data, you should first tag all data with an old timestamp.

Omid provides Snapshot Isolation which means that this past values of a key should not be physically deleted since a concurrent transaction might be reading it. That is why "delete" is implemented by an update with a special null value. The old versions of a key should be garbage collected over time.

Maysam


--
You received this message because you are subscribed to the Google Groups "Omid" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omid-project...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Mohammadreza

unread,
Jul 6, 2014, 8:08:25 AM7/6/14
to omid-p...@googlegroups.com, mofa...@gmail.com
Hi.Thanks for quick reply dear  Meysam.

1.Could you explain more about this sentence "If you want to run Omid on top of an existing data, you should first tag all data with an old timestamp."?,and How can I access to old TSO timestamp (Please suggest me a method If any method existing ).

* Because we have an existing database with Hbase with an existing data , from now we want to run OMID on top of it for supporting transactions. and we have problem in update/delete on existing data with OMID .

2.How can I use UNIX epoch Timestamp instead of sequential TSO timestamp  ? ( Is it possible ? )

3.I tried to doing your suggestion and used a timestamp ( biggest Timestamp that OMID putted ) and putted some data into Hbase manually with that timestamp version and I could read data with OMID(some of them that OMID generated their timestamps) and tried with some other timestamps that were not in the TSO Metadata and I couldn't read them with OMID.is this logical? . and I realized that TSO's timestamp's aren't sequential and some of them isn't in meta store.Why it happens ?Because of Aborted transactions?

Finally : I'm reading your paper  "  Omid : Lock-free Transactional Support for Distributed Data Stores "  you compared Hbase with OMID and without OMID 
But how about overhead for many many rows ? Is there any concern?

با آرزوی بهترین ها برای هموطن عزیزم
 



Maysam Yabandeh

unread,
Jul 6, 2014, 3:00:38 PM7/6/14
to Mohammadreza, omid-p...@googlegroups.com
1. The last timestamp used by Omid is stored in persistent storage. You need to follow the source code to find the place and retrieve it. Otherwise it should be simple to change the source code to start from a specified timestamp. What you need is to use a timestamp less than what Omid uses at startup. I guess 1 should be fine (I remember Hbase had a bug with 0, not sure if it is fixed yet).

2. It would be ok from correctness point of view. But data structures in Omid are build efficiently based on the current way of generating timestamps.

3. No that is weird; unless your timestamp is already being used for an aborted transaction. Try 1 and you should be fine.

Commit transactions also need timestamp; that is why the sequence of start timestamps that you see are not sequential.

4. Practical systems do not insert many rows per transaction. You should see what is the average transaction write size in your workload and what is your expected write TPS.

Maysam


Reply all
Reply to author
Forward
0 new messages