DistributedSqlEngine:open
此方法使用指定的参数列表打开一个 SmartEDB 数据库,SmartEDB SQL 映射器以及 McoSqlEngine 实例。
bool open(
nodes,
nNodes,
nReplicas = 1,
replType = SQL_REPLICATION,
maxConnectAttempts = 10,
badNode = NULL,
localDomain = false,
sslParameters = NULL,
connectTimeout = 2*1000,
readTimeout = 1200*1000,
compressionLevel = 0
);
参数
nodes
char const*
包含节点名称和端口(“名称:端口”)的数组。
nNodes
int
服务器串口。
nReplicas
int
副本数量;此数量应为 nNodes 的约数,即 nNodes 除以 nReplicas 的余数为 0。例如,nNodes 和 nReplicas 的值可以是(4 和 2)或(12 和 3),但不能是(6 和 4),因为 6 % 4 = 2。
replType
ReplicationType
副本方法。
maxConnectAttempts
int
连接服务器的最大尝试次数。
badNode
int*
如果不为空(null)且打开失败,则不可用节点的索引将存储在 badNode
中。
localDomain
bool
表明 RSQL 通信使用的是 Unix 域套接字而非网络化的 TCP 套接字,仅适用于服务器和客户端位于同一主机时。
sslParameters
void*
指向包含 SSL 连接设置的 mco_ssl_params_t 结构的指针。
connectTimeout
timer_unit
每次连接尝试的超时时间(以毫秒为单位)。总的连接时间最多可达 connectTimeout * maxConnectionAttempts
毫秒。
readTimeout
timer_unit
读取操作的超时时间(以毫秒为单位)。
compression_level
int
压缩级别:0 = 不压缩;1 = 最高速度,9 = 最佳压缩。默认值为 0 。
返回
bool
此方法在成功建立与服务器的连接时返回 true
,否则返回 false
。
示例
const size_t MAX_CONNECT_ATTEMPTS = 10;
const size_t MAX_NODES = 1024;
int main(int argc, char* argv[])
{
MCO_RET rc;
char* nodes[MAX_NODES];
bool localDomain = false;
int redundancy = 1;
...
while (i < argc && (*argv[i] == '-' || *argv[i] == '@'))
{
nodes[nNodes++] = &argv[i][1];
}
...
DistributedSqlEngine* client = new DistributedSqlEngine();
int badNode = -1;
if (!client->open(nodes, nNodes, redundancy,
DistributedSqlEngine::SQL_REPLICATION,
MAX_CONNECT_ATTEMPTS, &badNode, localDomain))
{
fprintf(stderr, "Failed to connect to node %d\n", badNode);
return 1;
}
...
}