SqlAggregator类
SqlAggregator 是一个类,其作用类似于分布式连接,但仅在一个进程中运行。要使用 SqlAggregator,Java 应用程序需创建一个 SqlLocalConnection 对象数组作为分片运行。然后启动所有 SqlLocalConnection 对象,并将该数组传递给 SqlAggregator 构造函数。
例如:
SqlLocalConnection [] shards = new SqlLocalConnection[NSHARDS];
for (int i = 0; i < NSHARDS; i++)
{
shards[i] = create_database("agg" + Integer.toString(i), config, is_dptr);
}
SqlAggregator agg = new SqlAggregator(shards, 64*1024);
一旦聚合器创建并初始化完成,即可像使用 SqlLocalConnection 一样使用它。例如,执行查询:
agg.executeStatement(("1:insert into MyTable (pk,value) values (?,?)", 2012, "Good bye"));
当不再需要时,必须通过 SqlAggregator.disconnect() 方法关闭聚合器,然后关闭 SqlLocalConnection 对象:
agg.disconnect();
for (int i = 0; i < NSHARDS; i++)
{
shards[i].disconnect();
}
请注意,类 SqlAggregator 直接使用传递给构造函数的 SqlLocalConnection 对象。因此,在 SqlAggregator 对象的生命周期内,这些 SqlLocalConnection 对象不应在其他应用程序代码中使用。这会导致这些对象在不同的程序线程中同时被使用:应用程序的线程和由 SqlAggregator 内部创建的用于服务 SqlLocalConnections 的线程。
SQL 字符串长度
对于 SqlLocalConnection 类的 executeStatement() 和 executeQuery() 方法,语句字符串参数的长度没有限制,但对于 SqlAggregator 类,语句字符串的长度受构造函数中传递的 bufferSize 参数限制,默认值为 64 Kb。(这同样适用于 SqlRemoteConnection 类)。更多详情请参阅 SQL 语句字符串页面。