From 650aef7985b8a83b36c540e55593d785fe495637 Mon Sep 17 00:00:00 2001 From: wenzhenghu Date: Wed, 5 Jun 2019 10:23:44 +0800 Subject: [PATCH 1/2] add conf entry jdbc.storage_engine to change storage engine --- .../hugegraph/backend/store/mysql/MysqlOptions.java | 8 ++++++++ .../hugegraph/backend/store/mysql/MysqlSessions.java | 10 ++++++++-- .../hugegraph/backend/store/mysql/MysqlTable.java | 7 ++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java index 240b7e7deb..7f5ddeffbd 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java @@ -97,4 +97,12 @@ public static synchronized MysqlOptions instance() { disallowEmpty(), "disable" ); + + public static final ConfigOption STORAGE_ENGINE = + new ConfigOption<>( + "jdbc.storage_engine", + "The storage engine of backend store database, like InnoDB/MyISAM/RocksDB for MySQL.", + disallowEmpty(), + "InnoDB" + ); } diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java index 9f9feb8610..9ef799d26c 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java @@ -135,7 +135,7 @@ public Session session() { @Override protected Session newSession() { - return new Session(); + return new Session(this.config); } public void checkSessionConnected() { @@ -222,12 +222,14 @@ public class Session extends BackendSession { private Map statements; private boolean opened; private int count; + private HugeConfig config; - public Session() { + public Session(HugeConfig config) { this.conn = null; this.statements = new HashMap<>(); this.opened = false; this.count = 0; + this.config = config; try { this.open(); } catch (SQLException ignored) { @@ -235,6 +237,10 @@ public Session() { } } + public HugeConfig config() { + return this.config; + } + public void open() throws SQLException { if (this.conn != null && !this.conn.isClosed()) { return; diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java index d603ce250f..cd25f763ec 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java @@ -104,7 +104,7 @@ protected void createTable(Session session, TableDefine tableDefine) { } } sql.append("))"); - sql.append(this.engine()); + sql.append(this.engine(session)); sql.append(";"); LOG.debug("Create table: {}", sql); @@ -116,8 +116,9 @@ protected void createTable(Session session, TableDefine tableDefine) { } } - protected String engine() { - return " ENGINE=InnoDB"; + protected String engine(Session session) { + String engine = session.config().get(MysqlOptions.STORAGE_ENGINE); + return " ENGINE=" + engine; } protected void dropTable(Session session) { From 2bbe2caa5460417da576cde037fdf06c2eacef52 Mon Sep 17 00:00:00 2001 From: wenzhenghu Date: Wed, 5 Jun 2019 10:23:44 +0800 Subject: [PATCH 2/2] add conf entry jdbc.storage_engine to change storage engine --- .../backend/store/mysql/MysqlOptions.java | 8 +++++++ .../backend/store/mysql/MysqlSessions.java | 21 ++++++++++++++++++- .../backend/store/mysql/MysqlTable.java | 7 ++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java index 240b7e7deb..7f5ddeffbd 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlOptions.java @@ -97,4 +97,12 @@ public static synchronized MysqlOptions instance() { disallowEmpty(), "disable" ); + + public static final ConfigOption STORAGE_ENGINE = + new ConfigOption<>( + "jdbc.storage_engine", + "The storage engine of backend store database, like InnoDB/MyISAM/RocksDB for MySQL.", + disallowEmpty(), + "InnoDB" + ); } diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java index 9f9feb8610..c1f9208659 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlSessions.java @@ -135,7 +135,7 @@ public Session session() { @Override protected Session newSession() { - return new Session(); + return new Session(this.config); } public void checkSessionConnected() { @@ -222,12 +222,14 @@ public class Session extends BackendSession { private Map statements; private boolean opened; private int count; + private HugeConfig config; public Session() { this.conn = null; this.statements = new HashMap<>(); this.opened = false; this.count = 0; + this.config = null; try { this.open(); } catch (SQLException ignored) { @@ -235,6 +237,23 @@ public Session() { } } + public Session(HugeConfig config) { + this.conn = null; + this.statements = new HashMap<>(); + this.opened = false; + this.count = 0; + this.config = config; + try { + this.open(); + } catch (SQLException ignored) { + // Ignore + } + } + + public HugeConfig config() { + return this.config; + } + public void open() throws SQLException { if (this.conn != null && !this.conn.isClosed()) { return; diff --git a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java index d603ce250f..c71f96fb16 100644 --- a/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java +++ b/hugegraph-mysql/src/main/java/com/baidu/hugegraph/backend/store/mysql/MysqlTable.java @@ -104,7 +104,7 @@ protected void createTable(Session session, TableDefine tableDefine) { } } sql.append("))"); - sql.append(this.engine()); + sql.append(this.engine(session)); sql.append(";"); LOG.debug("Create table: {}", sql); @@ -116,6 +116,11 @@ protected void createTable(Session session, TableDefine tableDefine) { } } + protected String engine(Session session) { + String engine = session.config().get(MysqlOptions.STORAGE_ENGINE); + return " ENGINE=" + engine; + } + protected String engine() { return " ENGINE=InnoDB"; }