diff --git a/googledatastore/README.md b/googledatastore/README.md index a6755a6522ee100c5ab1a3c3ebad088a2ba31d7b..80b6a4cf8a12d95213a1a37c7a2f42588b132b6d 100644 --- a/googledatastore/README.md +++ b/googledatastore/README.md @@ -20,6 +20,9 @@ LICENSE file. https://cloud.google.com/datastore/docs/concepts/overview?hl=en +Please refer [here] (https://cloud.google.com/datastore/docs/apis/overview) for more information on +Google Cloud Datastore API. + ## Configure YCSB_HOME - YCSB home directory @@ -44,7 +47,7 @@ A. Configuration and setup: See this link for instructions about setting up Google Cloud Datastore and authentication: -https://cloud.google.com/datastore/docs/getstarted/start_java/ +https://cloud.google.com/datastore/docs/activate#accessing_the_datastore_api_from_another_platform After you setup your environment, you will have 3 pieces of information ready: - datasetId, diff --git a/googledatastore/conf/googledatastore.properties b/googledatastore/conf/googledatastore.properties index ac95b570c4ec4f469d6d6ceda0c6c13b3bdd9d29..408acf0d0d025f1dc419fa404633ea60f88ea133 100644 --- a/googledatastore/conf/googledatastore.properties +++ b/googledatastore/conf/googledatastore.properties @@ -26,7 +26,7 @@ # Google Cloud Datastore's read and update APIs do not support # reading or updating a select subset of properties for an entity. -# (as of version v1beta2-rev1-3.0.2) +# (as of version v1beta3) # Therefore, it's recommended that you set writeallfields and readallfields # to true to get stable and comparable performance numbers. writeallfields = true diff --git a/googledatastore/pom.xml b/googledatastore/pom.xml index 57db3505c288e6d27c309dbd19a0bcf1ba1fbd2e..3d636a2d523c6751240bf50d80fc6e285c5c8b52 100644 --- a/googledatastore/pom.xml +++ b/googledatastore/pom.xml @@ -31,9 +31,9 @@ LICENSE file. <dependencies> <dependency> - <groupId>com.google.apis</groupId> - <artifactId>google-api-services-datastore-protobuf</artifactId> - <version>v1beta2-rev1-3.0.2</version> + <groupId>com.google.cloud.datastore</groupId> + <artifactId>datastore-v1beta3-proto-client</artifactId> + <version>1.0.0-beta.1</version> </dependency> <dependency> <groupId>log4j</groupId> diff --git a/googledatastore/src/main/java/com/yahoo/ycsb/db/GoogleDatastoreClient.java b/googledatastore/src/main/java/com/yahoo/ycsb/db/GoogleDatastoreClient.java index 12fc0fac96ab0b442d4e1710160ab0fadb2d8842..a3f6553427d49565c61317474b3ceaaae74ab22e 100644 --- a/googledatastore/src/main/java/com/yahoo/ycsb/db/GoogleDatastoreClient.java +++ b/googledatastore/src/main/java/com/yahoo/ycsb/db/GoogleDatastoreClient.java @@ -18,15 +18,14 @@ package com.yahoo.ycsb.db; import com.google.api.client.auth.oauth2.Credential; -import com.google.api.services.datastore.DatastoreV1.*; -import com.google.api.services.datastore.DatastoreV1.CommitRequest.Mode; -import com.google.api.services.datastore.DatastoreV1.ReadOptions - .ReadConsistency; -import com.google.api.services.datastore.client.Datastore; -import com.google.api.services.datastore.client.DatastoreException; -import com.google.api.services.datastore.client.DatastoreFactory; -import com.google.api.services.datastore.client.DatastoreHelper; -import com.google.api.services.datastore.client.DatastoreOptions; +import com.google.datastore.v1beta3.*; +import com.google.datastore.v1beta3.CommitRequest.Mode; +import com.google.datastore.v1beta3.ReadOptions.ReadConsistency; +import com.google.datastore.v1beta3.client.Datastore; +import com.google.datastore.v1beta3.client.DatastoreException; +import com.google.datastore.v1beta3.client.DatastoreFactory; +import com.google.datastore.v1beta3.client.DatastoreHelper; +import com.google.datastore.v1beta3.client.DatastoreOptions; import com.yahoo.ycsb.ByteIterator; import com.yahoo.ycsb.DB; @@ -165,7 +164,7 @@ public class GoogleDatastoreClient extends DB { serviceAccountEmail + ", Private Key File Path: " + privateKeyFile); datastore = DatastoreFactory.get().create( - options.credential(credential).dataset(datasetId).build()); + options.credential(credential).projectId(datasetId).build()); } catch (GeneralSecurityException exception) { throw new DBException("Security error connecting to the datastore: " + @@ -184,7 +183,7 @@ public class GoogleDatastoreClient extends DB { public Status read(String table, String key, Set<String> fields, HashMap<String, ByteIterator> result) { LookupRequest.Builder lookupRequest = LookupRequest.newBuilder(); - lookupRequest.addKey(buildPrimaryKey(table, key)); + lookupRequest.addKeys(buildPrimaryKey(table, key)); lookupRequest.getReadOptionsBuilder().setReadConsistency( this.readConsistency); // Note above, datastore lookupRequest always reads the entire entity, it @@ -219,7 +218,7 @@ public class GoogleDatastoreClient extends DB { Entity entity = response.getFound(0).getEntity(); logger.debug("Read entity: " + entity.toString()); - Map<String, Value> properties = DatastoreHelper.getPropertyMap(entity); + Map<String, Value> properties = entity.getProperties(); Set<String> propertiesToReturn = (fields == null ? properties.keySet() : fields); @@ -267,11 +266,11 @@ public class GoogleDatastoreClient extends DB { if (this.entityGroupingMode == EntityGroupingMode.MULTI_ENTITY_PER_GROUP) { // All entities are in side the same group when we are in this mode. - result.addPathElement(Key.PathElement.newBuilder().setKind(table). + result.addPath(Key.PathElement.newBuilder().setKind(table). setName(rootEntityName)); } - return result.addPathElement(Key.PathElement.newBuilder().setKind(table) + return result.addPath(Key.PathElement.newBuilder().setKind(table) .setName(key)); } @@ -289,25 +288,25 @@ public class GoogleDatastoreClient extends DB { commitRequest.setMode(Mode.NON_TRANSACTIONAL); if (mutationType == MutationType.DELETE) { - commitRequest.getMutationBuilder().addDelete(datastoreKey); + commitRequest.addMutationsBuilder().setDelete(datastoreKey); } else { // If this is not for delete, build the entity. Entity.Builder entityBuilder = Entity.newBuilder(); entityBuilder.setKey(datastoreKey); for (Entry<String, ByteIterator> val : values.entrySet()) { - entityBuilder.addProperty(Property.newBuilder() - .setName(val.getKey()) - .setValue(Value.newBuilder() - .setStringValue(val.getValue().toString()))); + entityBuilder.getMutableProperties() + .put(val.getKey(), + Value.newBuilder() + .setStringValue(val.getValue().toString()).build()); } Entity entity = entityBuilder.build(); logger.debug("entity built as: " + entity.toString()); if (mutationType == MutationType.UPSERT) { - commitRequest.getMutationBuilder().addUpsert(entity); + commitRequest.addMutationsBuilder().setUpsert(entity); } else if (mutationType == MutationType.UPDATE){ - commitRequest.getMutationBuilder().addUpdate(entity); + commitRequest.addMutationsBuilder().setUpdate(entity); } else { throw new RuntimeException("Impossible MutationType, code bug."); }