> On Oct. 22, 2012, 2:11 p.m., Ivan Kelly wrote:
> > bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/Value.java, 
> > line 37
> > <https://reviews.apache.org/r/7314/diff/1/?file=160309#file160309line37>
> >
> >     value should only be a byte[]. adding fields like this does, 
> > overexpands the scope of the change without a strong need.
> 
> Jiannan Wang wrote:
>     Currently, SubscriptionData contains preference and state information, 
> where state is updated frequently while preference changes only when sub. To 
> make better performance, SubscriptionDataManager supports partial update 
> operation. This is the reason why we introduce fields in Value to support 
> updating a specific field.
> 
> Ivan Kelly wrote:
>     This is a lot of complexity to add for a single corner case. A simpler 
> solution would be to split SubscriptionData before writing to the metadata 
> interface and to write to 2 separate keys, subid-prefs and subid-state for 
> example.
>
> 
> Sijie Guo wrote:
>     Added my comments of fields:
>     
>     1) As Jiannan described, separated infrequent and frequent data in 
> different fields is one of the considerations.
>     2) In table system metadata storage, a field is required when adding 
> record to a table.
> 
> Jiannan Wang wrote:
>     Yeah, split preference and state informations into two separate keys 
> makes the API more simple. However, 1) it doubles the records. 2) separate 
> into 2 keys means two different versions, and we may need more logic if we 
> want to update both of them at the same time.
> 
> Ivan Kelly wrote:
>     1) isnt really a problem
>     for 2), some stores will have multiple versions anyhow if you put them in 
> separate columns (hbase for example).  
>     Do subscription prefs ever change after the subscription has been created?

> Do subscription prefs ever change after the subscription has been created?

In most cases, it doesn't change. But we allow the subscriber to change its 
preferences when it attached again to its subscription. 

w/o fields in the value, you have to force all implementations to use the 
storage as pure key/value storage, which could not leverage the underlying 
storage's features.
w/ fields in the value, for a table system implementing such interface, it was 
easy to do the schema mapping. for a K/V system implementing such interface, it 
could generate its real key using the combination with given key and its field.


- Sijie


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/7314/#review12653
-----------------------------------------------------------


On Nov. 1, 2012, 4:27 p.m., Jiannan Wang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/7314/
> -----------------------------------------------------------
> 
> (Updated Nov. 1, 2012, 4:27 p.m.)
> 
> 
> Review request for bookkeeper.
> 
> 
> Description
> -------
> 
> We need a MetaStore interface which easy for us to plugin different scalable 
> k/v storage, such as HBase.
> 
> 
> This addresses bug BOOKKEEPER-204.
>     https://issues.apache.org/jira/browse/BOOKKEEPER-204
> 
> 
> Diffs
> -----
> 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MSException.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetaStore.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreCallback.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreCursor.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreException.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreFactory.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreScannableTable.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreTable.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/MetastoreTableItem.java
>  PRE-CREATION 
>   bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/Value.java 
> PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/mock/MockMetaStore.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/mock/MockMetastoreCursor.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/mock/MockMetastoreTable.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/test/java/org/apache/bookkeeper/metastore/MetastoreScannableTableAsyncToSyncConverter.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/test/java/org/apache/bookkeeper/metastore/MetastoreTableAsyncToSyncConverter.java
>  PRE-CREATION 
>   
> bookkeeper-server/src/test/java/org/apache/bookkeeper/metastore/TestMetaStore.java
>  PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/7314/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Jiannan Wang
> 
>

Reply via email to