LindormDataSource は、すぐに使える最適化された設定を提供し、シングルゾーンおよびマルチゾーンインスタンスを含むすべてのタイプの Lindorm インスタンスへのアクセスをサポートします。これは、Lindorm にアクセスするためのパフォーマンス専有型の JDBC 接続プールです。マルチゾーンの Lindorm ワイドテーブルインスタンスを使用する場合、LindormDataSource は、最寄りゾーンアクセス、指定ゾーンアクセス、ランダムゾーンアクセスなど、複数のアクセス戦略をサポートします。
前提条件
JDK 1.8 以降の Java 環境が必要です。
ご利用のクライアント IP アドレスを Lindorm ホワイトリストに追加します。
接続パラメーターの説明
パラメーターの説明は、このトピックのすべての例に適用されます。
MySQL プロトコルを使用して Lindorm にアクセスする場合、接続 URL または Properties ファイルに接続設定が指定されていないと、LindormDataSource は SQL アクセスパフォーマンスを向上させるために最適化された設定を自動的に入力します。したがって、次の表にリストされているパラメーターを提供するだけで済みます。詳細については、「付録」をご参照ください。
パラメーター | 説明 |
JdbcUrl (jdbcUrl) | MySQL プロトコル用の Java JDBC 接続 URL。フォーマット: データベース名が指定されていない場合、デフォルトで "default" データベースが使用されます。MySQL 互換エンドポイントを取得するには、「接続エンドポイントの表示」をご参照ください。 重要
|
Username (username) | ワイドテーブルエンジンに接続するためのユーザー名とパスワードです。 パスワードを忘れた場合は、Lindorm ワイドテーブルエンジンのクラスター管理システムでリセットしてください。詳細については、「ユーザーパスワードの変更」をご参照ください。 |
Password (password) |
JDBC アプリケーションの統合
LindormDataSource を使用して Lindorm ワイドテーブルエンジンに接続する前に、必要な依存関係をインストールする必要があります。
Maven プロジェクトの場合、
dependenciesセクションのpom.xmlファイルに次の依存関係を追加します。<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.3.0</version> </dependency> <dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-sql-datasource</artifactId> <version>2.2.1.4</version> </dependency>次の 2 つの方法のいずれかで Lindorm ワイドテーブルエンジンに接続できます:
ビジネスコードで接続を確立する。
import com.aliyun.lindorm.sql.client.datasource.LindormDataSource; import com.aliyun.lindorm.sql.client.datasource.LindormDataSourceConfig; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class test { public static void main(String[] args) throws Exception{ LindormDataSourceConfig lindormDataSourceConfig = new LindormDataSourceConfig(); lindormDataSourceConfig.setJdbcUrl("jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060/database"); lindormDataSourceConfig.setUsername("r***"); lindormDataSourceConfig.setPassword("p***"); lindormDataSourceConfig.setMaximumPoolSize(30); LindormDataSource lindormDataSource = new LindormDataSource(lindormDataSourceConfig); try (Connection connection = lindormDataSource.getConnection()) { String sql = "select * from " + tableName + " where id=?"; try (PreparedStatement ps = connection.prepareStatement(sql)) { ps.setString(1, "001"); ResultSet rs = ps.executeQuery(); while (rs.next()) { String id = rs.getString(1); String name = rs.getString(2); System.out.println("id=" + id); System.out.println("name=" + name); } } } } }設定ファイルを使用して接続を確立する。
Maven プロジェクトの
src/main/resourcesディレクトリにlindorm.propertiesファイルを作成し、次の内容を追加します:jdbcUrl=jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060/default username=r*** password=p*** maximumPoolSize=30ビジネスロジックに次のコードを追加します:
LindormDataSourceConfig config = new LindormDataSourceConfig("lindorm.properties"); LindormDataSource lindormDataSource = new LindormDataSource(config);
Spring Boot 2.x アプリケーションの統合
LindormDataSource を使用して Lindorm ワイドテーブルエンジンに接続する前に、必要な依存関係をインストールする必要があります。
Maven プロジェクトの場合、
dependenciesセクションのpom.xmlファイルに次の依存関係を追加します。<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.3.0</version> </dependency> <dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-sql-datasource-springboot-starter</artifactId> <version>2.2.1.4</version> </dependency>Spring 設定を追加します。Maven プロジェクトの
src/main/resourcesディレクトリに application.yml ファイルを作成し、次の内容を追加します:spring: datasource: lindorm: jdbc-url: jdbc:mysql://ld-bp167w8n1ab5p****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/db1 username: r*** password: t*** maximum-pool-size: 30ビジネスコードを記述します。
@Service public class DatabaseService { @Autowired private DataSource dataSource; public void createUser(User user) throws SQLException { String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); ps.executeUpdate(); } } }
Spring Boot 3.x アプリケーションの統合
LindormDataSource を使用して Lindorm ワイドテーブルエンジンに接続する前に、必要な依存関係をインストールする必要があります。
Maven プロジェクトの場合、
pom.xmlファイルのdependenciesセクションに、以下の依存関係を追加します。<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.3.0</version> </dependency> <dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-sql-datasource-springboot-3-starter</artifactId> <version>2.2.1.4</version> </dependency>Spring 設定を追加します。Maven プロジェクトの
src/main/resourcesディレクトリにapplication.ymlファイルを作成し、次の内容を追加します:spring: datasource: lindorm: jdbc-url: jdbc:mysql://ld-bp167w8n1ab5p****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/db1 username: r*** password: r*** maximum-pool-size: 30ビジネスコードを記述します。
@Service public class DatabaseService { @Autowired private DataSource dataSource; public void createUser(User user) throws SQLException { String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); ps.executeUpdate(); } } }
MyBatis アプリケーションの統合
Spring Boot で MyBatis を使用する場合は、Spring Boot 内で MyBatis を設定する必要があります。Spring Boot を使用せずに MyBatis を単独で使用する場合は、次の手順に従ってください。
LindormDataSource を使用して Lindorm ワイドテーブルエンジンに接続する前に、必要な依存関係をインストールする必要があります。
Maven プロジェクトでは、
pom.xmlファイルのdependenciesセクションに、次の依存関係を追加します。<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.3.0</version> </dependency> <dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-sql-datasource</artifactId> <version>2.2.1.4</version> </dependency>次の 2 つの方法のいずれかで Lindorm ワイドテーブルエンジンに接続できます:
ビジネスコードで接続を確立する。
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); LindormDataSource dataSource = new LindormDataSource(); dataSource.setJdbcUrl("jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060"); dataSource.setUsername("r***"); dataSource.setPassword("r***"); sessionFactoryBean.setDataSource(dataSource); SqlSessionFactory sessionFactory = sessionFactoryBean.getObject(); try (SqlSession session = sessionFactory.openSession(true)) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.insert(user); }設定ファイルを使用して接続を確立する。
MyBatis と互換性のある DataSourceFactory を定義します。
package com.example.datasource; import com.aliyun.lindorm.sql.client.datasource.LindormDataSource; import com.aliyun.lindorm.sql.client.datasource.LindormDataSourceConfig; import org.apache.ibatis.datasource.DataSourceFactory; public class LindormDataSourceFactory implements DataSourceFactory { private Properties props; @Override public void setProperties(Properties props) { this.props = props; } @Override public DataSource getDataSource() { LindormDataSourceConfig config = new LindormDataSourceConfig(props); LindormDataSource dataSource = new LindormDataSource(config); return dataSource; } }mybatis-config.propertiesファイルを、Maven プロジェクトのsrc/main/resourcesディレクトリに作成し、以下の内容を追加します:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="com.example.datasource.LindormDataSourceFactory"> <property name="jdbcUrl" value="jdbc:mysql://ld-8vbn68478unu8****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/lindorm_test"/> <property name="username" value="r***"/> <property name="password" value="t***"/> <property name="maximumPoolSize" value="30"/> </dataSource> </environment> </environments> <mappers> <mapper class="com.example.mapper.UserMapper"/> </mappers> </configuration>ビジネスロジックに次のコードを追加します:
public static void main(String[] args) throws SQLException, IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); UserService userService = new UserService(sqlSessionFactory); userService.run(); }
オプションの設定項目
通常、設定する必要があるのは、最大接続プールサイズを指定する maximumPoolSize 設定項目のみです。他の設定項目は追加の設定を必要としません。
設定項目 | 説明 |
maximumPoolSize | 最大接続数。デフォルト値: |
minimumIdle | 最小アイドル接続数。デフォルト値は |
connectionTimeout | 接続取得タイムアウト (ミリ秒単位)。デフォルト値: |
keepaliveTime | キープアライブ間隔 (ミリ秒単位)。デフォルト値: |
idleTimeout | アイドル接続タイムアウト (ミリ秒単位)。デフォルト値: |
maxLifetime | 最大接続生存期間 (ミリ秒単位)。デフォルト値: |
付録
MySQL プロトコルを使用して Lindorm にアクセスする場合、URL (エンドポイント) または Properties ファイルで指定されていない場合、LindormDataSource は SQL アクセスパフォーマンスを向上させるために次のパラメーターを自動的に入力します。
自動的に入力されるデフォルトのパラメーターは次のとおりです:
("sslMode", "DISABLED");
("allowPublicKeyRetrieval", "true");
("useServerPrepStmts", "true");
("useLocalSessionState", "true");
("rewriteBatchedStatements", "true");
("cachePrepStmts", "true");
("prepStmtCacheSize", "300");
("prepStmtCacheSqlLimit", "50000000");したがって、LindormDataSource を使用する場合、MySQL プロトコル用の JDBC 接続 URL (`url` パラメーター) を提供し、ターゲットデータベース (`database` パラメーター) を指定するだけで済みます。接続設定を接続文字列に追加しないでください。例: jdbc:mysql://ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/default。