diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraSessionPool.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraSessionPool.java index 232fa85492..495eef83be 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraSessionPool.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraSessionPool.java @@ -213,7 +213,9 @@ private void tryOpen() { assert this.session == null; try { this.open(); - } catch (InvalidQueryException ignored) {} + } catch (InvalidQueryException ignored) { + // ignore + } } @Override diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraShard.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraShard.java index 4e3387b995..b0e970b965 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraShard.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraShard.java @@ -208,8 +208,8 @@ private Map getSubSplits(TokenRange tokenRange, private Map> getRangeMap() { Metadata metadata = this.session.metadata(); return metadata.getTokenRanges().stream().collect(Collectors.toMap( - p -> p, - p -> metadata.getReplicas('"' + this.keyspace + '"', p))); + p -> p, + p -> metadata.getReplicas('"' + this.keyspace + '"', p))); } private static Map describeSplits( diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraStore.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraStore.java index 0f37c92f89..90dcd5af49 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraStore.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraStore.java @@ -475,12 +475,12 @@ protected boolean existsKeyspace() { } protected boolean existsTable(String table) { - KeyspaceMetadata keyspace = this.cluster().getMetadata() + KeyspaceMetadata keyspace = this.cluster().getMetadata() .getKeyspace(this.keyspace); - if (keyspace != null && keyspace.getTable(table) != null) { - return true; - } - return false; + if (keyspace != null && keyspace.getTable(table) != null) { + return true; + } + return false; } protected void initKeyspace() { diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraTable.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraTable.java index 299f5eea0f..548726b4a4 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraTable.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraTable.java @@ -107,12 +107,12 @@ public Number queryNumber(CassandraSessionPool.Session session, statement.setReadTimeoutMillis(timeout * 1000); return session.query(statement); }, (q, rs) -> { - Row row = rs.one(); - if (row == null) { - return IteratorUtils.of(aggregate.defaultValue()); - } - return IteratorUtils.of(row.getLong(0)); - }); + Row row = rs.one(); + if (row == null) { + return IteratorUtils.of(aggregate.defaultValue()); + } + return IteratorUtils.of(row.getLong(0)); + }); return aggregate.reduce(results); } diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBMetrics.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBMetrics.java index 9704f82d27..1a7c0331ec 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBMetrics.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBMetrics.java @@ -198,7 +198,7 @@ private double sum(RocksDBSessions.Session session, String property) { double total = 0; for (RocksDBSessions db : this.dbs) { List cfValues = db.property(property); - for(String value : cfValues) { + for (String value : cfValues) { total += Double.parseDouble(value); } for (String table : db.openedTables()) { @@ -212,7 +212,7 @@ private double sum(String property) { double total = 0; for (RocksDBSessions db : this.dbs) { List cfValues = db.property(property); - for(String value : cfValues) { + for (String value : cfValues) { total += Double.parseDouble(value); } } diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBOptions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBOptions.java index 87d4d71a7d..f0a4df24e8 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBOptions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBOptions.java @@ -168,7 +168,8 @@ public static synchronized RocksDBOptions instance() { public static final ConfigOption MAX_BG_JOBS = new ConfigOption<>( "rocksdb.max_background_jobs", - "Maximum number of concurrent background jobs, including flushes and compactions.", + "Maximum number of concurrent background jobs, " + + "including flushes and compactions.", rangeInt(1, Integer.MAX_VALUE), 8 ); diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBSessions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBSessions.java index e146cbf54f..2d56a35a08 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBSessions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBSessions.java @@ -39,10 +39,13 @@ public RocksDBSessions(HugeConfig config, String database, String store) { public abstract Set openedTables(); public abstract void createTable(String... tables) throws RocksDBException; + public abstract void dropTable(String... tables) throws RocksDBException; + public abstract boolean existsTable(String table); public abstract List property(String property); + public abstract void compactRange(); public abstract RocksDBSessions copy(HugeConfig config, @@ -67,7 +70,7 @@ public abstract String hardLinkSnapshot(String snapshotPath) /** * Session for RocksDB */ - public static abstract class Session extends AbstractBackendSession { + public abstract static class Session extends AbstractBackendSession { public static final int SCAN_ANY = 0x80; public static final int SCAN_PREFIX_BEGIN = 0x01; @@ -78,29 +81,40 @@ public static abstract class Session extends AbstractBackendSession { public static final int SCAN_LTE_END = 0x30; public abstract String dataPath(); + public abstract String walPath(); public abstract String property(String table, String property); + public abstract Pair keyRange(String table); + public abstract void compactRange(String table); public abstract void put(String table, byte[] key, byte[] value); + public abstract void merge(String table, byte[] key, byte[] value); + public abstract void increase(String table, byte[] key, byte[] value); public abstract void delete(String table, byte[] key); + public abstract void deleteSingle(String table, byte[] key); + public abstract void deletePrefix(String table, byte[] key); + public abstract void deleteRange(String table, byte[] keyFrom, byte[] keyTo); public abstract byte[] get(String table, byte[] key); + public abstract BackendColumnIterator get(String table, List keys); public abstract BackendColumnIterator scan(String table); + public abstract BackendColumnIterator scan(String table, byte[] prefix); + public abstract BackendColumnIterator scan(String table, byte[] keyFrom, byte[] keyTo, diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java index e745bb3d47..75766e5daf 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java @@ -236,7 +236,7 @@ public List property(String property) { } } return values; - } catch(RocksDBException | UnsupportedOperationException e) { + } catch (RocksDBException | UnsupportedOperationException e) { throw new BackendException(e); } } @@ -728,7 +728,8 @@ public String property(String table, String property) { @Override public Pair keyRange(String table) { - byte[] startKey, endKey; + byte[] startKey; + byte[] endKey; try (CFHandle cf = cf(table); RocksIterator iter = rocksdb().newIterator(cf.get())) { iter.seekToFirst(); @@ -1058,14 +1059,14 @@ private boolean match(int expected) { @SuppressWarnings("unused") private void dump() { this.seek(); - System.out.println(">>>> scan from " + this.table + ": " + - (this.keyBegin == null ? "*" : - StringEncoding.format(this.keyBegin)) + - (this.iter.isValid() ? "" : " - No data")); + LOG.info(">>>> scan from {}: {}{}", + this.table, + this.keyBegin == null ? "*" : StringEncoding.format(this.keyBegin), + this.iter.isValid() ? "" : " - No data"); for (; this.iter.isValid(); this.iter.next()) { - System.out.println(String.format("%s=%s", - StringEncoding.format(this.iter.key()), - StringEncoding.format(this.iter.value()))); + LOG.info("{}={}", + StringEncoding.format(this.iter.key()), + StringEncoding.format(this.iter.value())); } } diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBTables.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBTables.java index a977629783..38e981e372 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBTables.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBTables.java @@ -50,7 +50,7 @@ public long getCounter(Session session, HugeType type) { byte[] key = new byte[]{type.code()}; byte[] value = session.get(this.table(), key); if (value != null) { - return l(value); + return toLong(value); } else { return 0L; } @@ -59,16 +59,16 @@ public long getCounter(Session session, HugeType type) { public void increaseCounter(Session session, HugeType type, long increment) { byte[] key = new byte[]{type.code()}; - session.increase(this.table(), key, b(increment)); + session.increase(this.table(), key, toBytes(increment)); } - private static byte[] b(long value) { + private static byte[] toBytes(long value) { return ByteBuffer.allocate(Long.BYTES) .order(ByteOrder.nativeOrder()) .putLong(value).array(); } - private static long l(byte[] bytes) { + private static long toLong(byte[] bytes) { assert bytes.length == Long.BYTES; return ByteBuffer.wrap(bytes) .order(ByteOrder.nativeOrder()) @@ -282,11 +282,15 @@ protected BackendColumnIterator queryByCond(Session session, break; case GTE: minEq = true; + min = (Id) r.value(); + break; case GT: min = (Id) r.value(); break; case LTE: maxEq = true; + max = (Id) r.value(); + break; case LT: max = (Id) r.value(); break; @@ -323,7 +327,7 @@ public RangeIntIndex(String store) { } } - public static class RangeFloatIndex extends RangeIndex{ + public static class RangeFloatIndex extends RangeIndex { public static final String TABLE = HugeType.RANGE_FLOAT_INDEX.string(); @@ -341,7 +345,7 @@ public RangeLongIndex(String store) { } } - public static class RangeDoubleIndex extends RangeIndex{ + public static class RangeDoubleIndex extends RangeIndex { public static final String TABLE = HugeType.RANGE_DOUBLE_INDEX.string(); diff --git a/hugegraph-scylladb/src/main/java/com/baidu/hugegraph/backend/store/scylladb/ScyllaDBTablesWithMV.java b/hugegraph-scylladb/src/main/java/com/baidu/hugegraph/backend/store/scylladb/ScyllaDBTablesWithMV.java index f203c6e57e..2a771c14cb 100644 --- a/hugegraph-scylladb/src/main/java/com/baidu/hugegraph/backend/store/scylladb/ScyllaDBTablesWithMV.java +++ b/hugegraph-scylladb/src/main/java/com/baidu/hugegraph/backend/store/scylladb/ScyllaDBTablesWithMV.java @@ -87,18 +87,18 @@ private static void dropIndexTable(CassandraSessionPool.Session session, public static class PropertyKey extends CassandraTables.PropertyKey { - private final String MV_NAME2PK = mvNameTable(this.table()); + private final String mvName2Pk = mvNameTable(this.table()); @Override protected void createIndex(CassandraSessionPool.Session session, String indexLabel, HugeKeys column) { - createSchemaIndexTable(session, MV_NAME2PK, this.table()); + createSchemaIndexTable(session, mvName2Pk, this.table()); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_NAME2PK); + dropIndexTable(session, mvName2Pk); super.dropTable(session); } @@ -106,7 +106,7 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List query2Select(String table, Query query) { public static class VertexLabel extends CassandraTables.VertexLabel { - private final String MV_NAME2VL = mvNameTable(this.table()); + private final String mvName2Vl = mvNameTable(this.table()); @Override protected void createIndex(CassandraSessionPool.Session session, String indexLabel, HugeKeys column) { - createSchemaIndexTable(session, MV_NAME2VL, this.table()); + createSchemaIndexTable(session, mvName2Vl, this.table()); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_NAME2VL); + dropIndexTable(session, mvName2Vl); super.dropTable(session); } @@ -133,7 +133,7 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List query2Select(String table, Query query) { public static class EdgeLabel extends CassandraTables.EdgeLabel { - private final String MV_NAME2EL = mvNameTable(this.table()); + private final String mvName2El = mvNameTable(this.table()); @Override protected void createIndex(CassandraSessionPool.Session session, String indexLabel, HugeKeys column) { - createSchemaIndexTable(session, MV_NAME2EL, this.table()); + createSchemaIndexTable(session, mvName2El, this.table()); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_NAME2EL); + dropIndexTable(session, mvName2El); super.dropTable(session); } @@ -160,7 +160,7 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List query2Select(String table, Query query) { public static class IndexLabel extends CassandraTables.IndexLabel { - private final String MV_NAME2IL = mvNameTable(this.table()); + private final String mvName2Il = mvNameTable(this.table()); @Override protected void createIndex(CassandraSessionPool.Session session, String indexLabel, HugeKeys column) { - createSchemaIndexTable(session, MV_NAME2IL, this.table()); + createSchemaIndexTable(session, mvName2Il, this.table()); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_NAME2IL); + dropIndexTable(session, mvName2Il); super.dropTable(session); } @@ -187,7 +187,7 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List query2Select(String table, Query query) { public static class Vertex extends CassandraTables.Vertex { - private final String MV_LABEL2VERTEX = mvLabelTable(this.table()); + private final String mvLabel2Vertex = mvLabelTable(this.table()); public Vertex(String store) { super(store); @@ -212,13 +212,13 @@ protected void createIndex(CassandraSessionPool.Session session, " SELECT * FROM %s " + " WHERE %s IS NOT NULL " + " PRIMARY KEY(%s, %s)", - MV_LABEL2VERTEX, this.table(), LABEL, LABEL, ID); + mvLabel2Vertex, this.table(), LABEL, LABEL, ID); session.execute(cql); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_LABEL2VERTEX); + dropIndexTable(session, mvLabel2Vertex); super.dropTable(session); } @@ -230,7 +230,7 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List query2Select(String table, Query query) { public static class Edge extends CassandraTables.Edge { - private final String MV_LABEL2EDGE = mvLabelTable(this.table()); + private final String mvLabel2Edge = mvLabelTable(this.table()); - private final String LABEL = CassandraTable.formatKey(HugeKeys.LABEL); - private final List KEYS = this.idColumnName().stream() + private static final String LABEL = CassandraTable.formatKey(HugeKeys.LABEL); + private final List keys = this.idColumnName().stream() .filter(k -> k != HugeKeys.LABEL) .map(k -> CassandraTable.formatKey(k)) .collect(Collectors.toList()); - private final String PRKEYS = this.KEYS.stream() + private final String prKeys = this.keys.stream() .collect(Collectors.joining(",")); - private final String PRKEYS_NN = this.KEYS.stream().collect( + private final String prkeysNn = this.keys.stream().collect( Collectors.joining(" IS NOT NULL AND ")); public Edge(String store, Directions direction) { @@ -263,15 +263,15 @@ protected void createIndex(CassandraSessionPool.Session session, " SELECT * FROM %s " + " WHERE %s IS NOT NULL AND %s IS NOT NULL " + " PRIMARY KEY(%s, %s)", - MV_LABEL2EDGE, this.table(), - this.LABEL, this.PRKEYS_NN, - this.LABEL, this.PRKEYS); + mvLabel2Edge, this.table(), + this.LABEL, this.prkeysNn, + this.LABEL, this.prKeys); session.execute(cql); } @Override protected void dropTable(CassandraSessionPool.Session session) { - dropIndexTable(session, MV_LABEL2EDGE); + dropIndexTable(session, mvLabel2Edge); super.dropTable(session); } @@ -282,14 +282,14 @@ protected void dropTable(CassandraSessionPool.Session session) { protected List