RE: questions about LMDB

2015-03-19 Thread Shu, Xinxin
Sorry for the wrong mail list , I will  forward this request to technical list

Cheers,
xinxin

-Original Message-
From: Howard Chu [mailto:h...@symas.com] 
Sent: Thursday, March 19, 2015 11:52 PM
To: Shu, Xinxin; openldap-devel@openldap.org
Subject: Re: questions about LMDB

Shu, Xinxin wrote:
> Several other questions about lmdb
>
> 1) does lmdb store one key-value pair in a single page? How lmdb organizes 
> these key-value pairs in a single page
> 2)  if size is larger than single page size , how lmdb process this request?

This list is for developers to discuss actual coding issues inside the OpenLDAP 
code; your questions are too elementary and don't belong here. Use the 
-technical list for user-oriented questions.
>
> Any help will be appreciated ? thanks
>
> Cheers,
> xinxin
>
> -Original Message-
> From: Shu, Xinxin
> Sent: Thursday, March 19, 2015 3:49 PM
> To: openldap-devel@openldap.org
> Cc: Shu, Xinxin
> Subject: questions about LMDB
>
> Hi list ,
>
> Recently I read docs about lmdb , there are two sentences
> 1) readers do not block writers
> 2) writers do not block readers
> I can understand 'readers do not block writers' , but cannot understand the 
> second one , can someone help explain , how lmdb achieve 'writers do not 
> block readers',  below is my understandings , please correct me if anything 
> wrong.
>   if the access pattern is write - read, since lmdb only support two version 
> of data ,  when the write has been started but not committed ,  the 
> concurrent read may read stale data since write has not been committed.
>
> Cheers,
> xinxin
>
>
>


-- 
   -- Howard Chu
   CTO, Symas Corp.   http://www.symas.com
   Director, Highland Sun http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/



Re: questions about LMDB

2015-03-19 Thread Howard Chu

Shu, Xinxin wrote:

Several other questions about lmdb

1) does lmdb store one key-value pair in a single page? How lmdb organizes 
these key-value pairs in a single page
2)  if size is larger than single page size , how lmdb process this request?


This list is for developers to discuss actual coding issues inside the OpenLDAP 
code; your questions are too elementary and don't belong here. Use the 
-technical list for user-oriented questions.


Any help will be appreciated ? thanks

Cheers,
xinxin

-Original Message-
From: Shu, Xinxin
Sent: Thursday, March 19, 2015 3:49 PM
To: openldap-devel@openldap.org
Cc: Shu, Xinxin
Subject: questions about LMDB

Hi list ,

Recently I read docs about lmdb , there are two sentences
1) readers do not block writers
2) writers do not block readers
I can understand 'readers do not block writers' , but cannot understand the 
second one , can someone help explain , how lmdb achieve 'writers do not block 
readers',  below is my understandings , please correct me if anything wrong.
  if the access pattern is write - read, since lmdb only support two version of 
data ,  when the write has been started but not committed ,  the concurrent 
read may read stale data since write has not been committed.

Cheers,
xinxin






--
  -- Howard Chu
  CTO, Symas Corp.   http://www.symas.com
  Director, Highland Sun http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/



Re: questions about LMDB

2015-03-19 Thread Howard Chu

Shu, Xinxin wrote:

Hi list ,

Recently I read docs about lmdb , there are two sentences
1) readers do not block writers
2) writers do not block readers
I can understand 'readers do not block writers' , but cannot

understand the second one , can someone help explain , how lmdb achieve
'writers do not block readers', below is my understandings , please
correct me if anything wrong.

if the access pattern is write - read, since lmdb only support two

version of data , when the write has been started but not committed ,
the concurrent read may read stale data since write has not been committed.

This is fundamental to ACID transactions. The reader's data is not "stale" 
because in ACID, data doesn't actually exist until it's committed. This is what Atomicity 
and Isolation are all about.

Sounds to me like you have never used a real transactional database before; you 
need to do more reading on them because this is a very basic principle.

--
  -- Howard Chu
  CTO, Symas Corp.   http://www.symas.com
  Director, Highland Sun http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/



RE: questions about LMDB

2015-03-19 Thread Shu, Xinxin
Several other questions about lmdb

1) does lmdb store one key-value pair in a single page? How lmdb organizes 
these key-value pairs in a single page
2)  if size is larger than single page size , how lmdb process this request?

Any help will be appreciated ? thanks

Cheers,
xinxin

-Original Message-
From: Shu, Xinxin 
Sent: Thursday, March 19, 2015 3:49 PM
To: openldap-devel@openldap.org
Cc: Shu, Xinxin
Subject: questions about LMDB

Hi list ,

Recently I read docs about lmdb , there are two sentences 
1) readers do not block writers 
2) writers do not block readers
I can understand 'readers do not block writers' , but cannot understand the 
second one , can someone help explain , how lmdb achieve 'writers do not block 
readers',  below is my understandings , please correct me if anything wrong.
 if the access pattern is write - read, since lmdb only support two version of 
data ,  when the write has been started but not committed ,  the concurrent 
read may read stale data since write has not been committed.

Cheers,
xinxin




questions about LMDB

2015-03-19 Thread Shu, Xinxin
Hi list ,

Recently I read docs about lmdb , there are two sentences 
1) readers do not block writers 
2) writers do not block readers
I can understand 'readers do not block writers' , but cannot understand the 
second one , can someone help explain , how lmdb achieve 'writers do not block 
readers',  below is my understandings , please correct me if anything wrong.
 if the access pattern is write - read, since lmdb only support two version of 
data ,  when the write has been started but not committed ,  the concurrent 
read may read stale data since write has not been committed.

Cheers,
xinxin