You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by mi...@apache.org on 2017/08/10 17:47:57 UTC

incubator-rya git commit: RYA-316 Long OBJ string. Closes #199

Repository: incubator-rya
Updated Branches:
  refs/heads/master 2326e2dd8 -> bf0d4190e


RYA-316 Long OBJ string. Closes #199

Hash the indexed object field with SHA256.
This will allow the indexer not to break
if the object is longer than 1024 bytes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/bf0d4190
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/bf0d4190
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/bf0d4190

Branch: refs/heads/master
Commit: bf0d4190eea0a266719bf75d36e02d8273b59daf
Parents: 2326e2d
Author: isper3at <sm...@gmail.com>
Authored: Mon Aug 7 13:28:46 2017 -0400
Committer: Aaron Mihalik <aa...@gmail.com>
Committed: Thu Aug 10 13:33:32 2017 -0400

----------------------------------------------------------------------
 .../dao/SimpleMongoDBStorageStrategy.java       | 27 +++++++++++++-------
 .../SimpleMongoDBStorageStrategyTest.java       |  4 +++
 2 files changed, 22 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/bf0d4190/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
index 8d194fc..a8f548c 100644
--- a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
+++ b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
@@ -26,6 +26,7 @@ import java.security.NoSuchAlgorithmException;
 import java.util.Map;
 
 import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.log4j.Logger;
 import org.apache.rya.api.domain.RyaStatement;
 import org.apache.rya.api.domain.RyaType;
@@ -53,8 +54,11 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy<RyaS
     public static final String OBJECT_TYPE_VALUE = XMLSchema.ANYURI.stringValue();
     public static final String CONTEXT = "context";
     public static final String PREDICATE = "predicate";
+    public static final String PREDICATE_HASH = "predicate_hash";
     public static final String OBJECT = "object";
+    public static final String OBJECT_HASH = "object_hash";
     public static final String SUBJECT = "subject";
+    public static final String SUBJECT_HASH = "subject_hash";
     public static final String TIMESTAMP = "insertTimestamp";
     public static final String STATEMENT_METADATA = "statementMetadata";
     public static final String DOCUMENT_VISIBILITY = "documentVisibility";
@@ -64,16 +68,18 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy<RyaS
     @Override
     public void createIndices(final DBCollection coll){
         BasicDBObject doc = new BasicDBObject();
-        doc.put(SUBJECT, 1);
-        doc.put(PREDICATE, 1);
+        doc.put(SUBJECT_HASH, 1);
+        doc.put(PREDICATE_HASH, 1);
+        doc.put(OBJECT_HASH, 1);
+        doc.put(OBJECT_TYPE, 1);
         coll.createIndex(doc);
-        doc = new BasicDBObject(PREDICATE, 1);
-        doc.put(OBJECT, 1);
+        doc = new BasicDBObject(PREDICATE_HASH, 1);
+        doc.put(OBJECT_HASH, 1);
         doc.put(OBJECT_TYPE, 1);
         coll.createIndex(doc);
-        doc = new BasicDBObject(OBJECT, 1);
+        doc = new BasicDBObject(OBJECT_HASH, 1);
         doc.put(OBJECT_TYPE, 1);
-        doc.put(SUBJECT, 1);
+        doc.put(SUBJECT_HASH, 1);
         coll.createIndex(doc);
     }
 
@@ -85,14 +91,14 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy<RyaS
         final RyaURI context = stmt.getContext();
         final BasicDBObject query = new BasicDBObject();
         if (subject != null){
-            query.append(SUBJECT, subject.getData());
+            query.append(SUBJECT_HASH, DigestUtils.sha256Hex(subject.getData()));
         }
         if (object != null){
-            query.append(OBJECT, object.getData());
+            query.append(OBJECT_HASH, DigestUtils.sha256Hex(object.getData()));
             query.append(OBJECT_TYPE, object.getDataType().toString());
         }
         if (predicate != null){
-            query.append(PREDICATE, predicate.getData());
+            query.append(PREDICATE_HASH, DigestUtils.sha256Hex(predicate.getData()));
         }
         if (context != null){
             query.append(CONTEXT, context.getData());
@@ -173,8 +179,11 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy<RyaS
         final BasicDBObject dvObject = DocumentVisibilityAdapter.toDBObject(statement.getColumnVisibility());
         final BasicDBObject doc = new BasicDBObject(ID, new String(Hex.encodeHex(bytes)))
         .append(SUBJECT, statement.getSubject().getData())
+        .append(SUBJECT_HASH, DigestUtils.sha256Hex(statement.getSubject().getData()))
         .append(PREDICATE, statement.getPredicate().getData())
+        .append(PREDICATE_HASH, DigestUtils.sha256Hex(statement.getPredicate().getData()))
         .append(OBJECT, statement.getObject().getData())
+        .append(OBJECT_HASH, DigestUtils.sha256Hex(statement.getObject().getData()))
         .append(OBJECT_TYPE, statement.getObject().getDataType().toString())
         .append(CONTEXT, context)
         .append(STATEMENT_METADATA, statement.getMetadata().toString())

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/bf0d4190/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
index 2af6da9..15bd636 100644
--- a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
+++ b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
@@ -23,6 +23,7 @@ import static org.openrdf.model.vocabulary.XMLSchema.ANYURI;
 
 import java.io.IOException;
 
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.rya.api.domain.RyaStatement;
 import org.apache.rya.api.domain.RyaStatement.RyaStatementBuilder;
 import org.apache.rya.api.domain.RyaURI;
@@ -62,8 +63,11 @@ public class SimpleMongoDBStorageStrategyTest {
         testDBO = new BasicDBObject();
         testDBO.put(SimpleMongoDBStorageStrategy.ID, "d5f8fea0e85300478da2c9b4e132c69502e21221");
         testDBO.put(SimpleMongoDBStorageStrategy.SUBJECT, SUBJECT);
+        testDBO.put(SimpleMongoDBStorageStrategy.SUBJECT_HASH, DigestUtils.sha256Hex(SUBJECT));
         testDBO.put(SimpleMongoDBStorageStrategy.PREDICATE, PREDICATE);
+        testDBO.put(SimpleMongoDBStorageStrategy.PREDICATE_HASH, DigestUtils.sha256Hex(PREDICATE));
         testDBO.put(SimpleMongoDBStorageStrategy.OBJECT, OBJECT);
+        testDBO.put(SimpleMongoDBStorageStrategy.OBJECT_HASH, DigestUtils.sha256Hex(OBJECT));
         testDBO.put(SimpleMongoDBStorageStrategy.OBJECT_TYPE, ANYURI.stringValue());
         testDBO.put(SimpleMongoDBStorageStrategy.CONTEXT, CONTEXT);
         testDBO.put(SimpleMongoDBStorageStrategy.STATEMENT_METADATA, STATEMENT_METADATA);