[ 
https://issues.apache.org/jira/browse/GORA-411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16795698#comment-16795698
 ] 

John Mora edited comment on GORA-411 at 3/19/19 5:24 AM:
---------------------------------------------------------

Hi [~alfonso.nishikawa] , [~lewismc].

I would like to work on this issue as a warm up task for my GoSC2019 
application.

I added the method _*public*_ _*boolean exists(K key) throws GoraException*_ in 
the *DataStore* interface and implemented a default behavior in the 
*DataStoreBase* class as follows.
{code:java}
@Override
  public boolean exists(K key) throws GoraException {
    return get(key,new String [0])!=null;
  }
{code}
And, for testing I added the following case:
{code:java}
  public static void testExistsEmployee(DataStore<String, Employee> dataStore)
    throws Exception {
    dataStore.createSchema();
    Employee employee = DataStoreTestUtil.createEmployee();
    String ssn = employee.getSsn().toString();
    dataStore.put(ssn, employee);
    dataStore.flush();   
    assertTrue(dataStore.exists(ssn));
    dataStore.delete(ssn);
    dataStore.flush();
    assertFalse(dataStore.exists(ssn));
  }{code}
It seems this naive approach works (tests are passing), so I think I could 
analyze every backend in order to find more adequate custom implementations for 
each one. But, I would like to know if the test case above is enough for this 
new method, do you know other edge cases that should be also checked?.

Cheers,

John

 

 


was (Author: jhnmora000):
Hi [~alfonso.nishikawa] , [~lewismc].


 I would like to work on this issue as a warm up task for my GoSC2019 
application.

I added the method _*public*_ _*boolean exists(K key) throws GoraException*_ in 
the *DataStore* interface and implemented a default behavior in the 
*DataStoreBase* class as follows.
{code:java}
@Override
  public boolean exists(K key) throws GoraException {
    return get(key,new String [0])!=null;
  }
{code}
And, for testing I added the following case:

 
{code:java}
  public static void testExistsEmployee(DataStore<String, Employee> dataStore)
    throws Exception {
    dataStore.createSchema();
    Employee employee = DataStoreTestUtil.createEmployee();
    String ssn = employee.getSsn().toString();
    dataStore.put(ssn, employee);
    dataStore.flush();   
    assertTrue(dataStore.exists(ssn));
    dataStore.delete(ssn);
    dataStore.flush();
    assertFalse(dataStore.exists(ssn));
  }{code}
It seems this naive approach works (tests are passing), so I think I could 
analyze every backend in order to find more adequate custom implementations for 
each one. But, I would like to know if the test case above is enough for this 
new method, do you know other edge cases that should be also checked?.

 

 

Cheers,

John

 

 

> Add exists(key) to DataStore interface
> --------------------------------------
>
>                 Key: GORA-411
>                 URL: https://issues.apache.org/jira/browse/GORA-411
>             Project: Apache Gora
>          Issue Type: Improvement
>          Components: gora-core, storage
>            Reporter: Alfonso Nishikawa
>            Priority: Minor
>             Fix For: 0.9
>
>
> NUTCH-1679 need to check if there exists some rows and they are proposing to 
> use {{store.get(TableUtil.reverseUrl(url)))}}.
> This will have a considerably impact on performance since every column will 
> be fetched.
> Some datastores implements a call to just check if a row exists (like HBase) 
> so no data is transfered by network.
> If a datastore can't handle an "exists" call, can default to a get.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to