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 <smith...@gmail.com> Authored: Mon Aug 7 13:28:46 2017 -0400 Committer: Aaron Mihalik <aaron.miha...@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);