CQERL:原生Erlang CQL客户端教程
cqerlNative Erlang CQL client for Cassandra项目地址:https://gitcode.com/gh_mirrors/cq/cqerl
项目介绍
CQERL是一个专为Cassandra设计的纯Erlang编写的CQL(Cassandra查询语言)客户端。该库强调简单性与性能,支持自动连接池管理、批量查询、变量绑定、集合类型及自定义类型的支持,并内建了对SSL、自动压缩以及可插拔认证机制的支持。遵循MIT许可证,CQERL使得在Erlang生态系统中集成Cassandra变得轻而易举。
项目快速启动
要快速开始使用CQERL,首先确保你的开发环境已经安装了Erlang,并且可以从GitHub克隆该项目:
git clone https://github.com/cqerl/cqerl.git
cd cqerl
接下来,安装项目及其依赖项:
rebar3 compile
配置Cassandra连接,您可以在应用环境中设置以下参数来初始化连接池:
application:set_env(cqerl, cassandra_nodes, [{"127.0.0.1", 9042}]).
application:set_env(cqerl, ssl, [{cacertfile, "path/to/cassandra.pem"}]).
application:set_env(cqerl, auth, {cqerl_auth_plain_handler, {"test", "aaa"}}).
之后,在您的代码中获取客户端实例并执行CQL命令:
{ok, Client} = cqerl:get_client().
cqerl:execute(Client, "SELECT * FROM keyspace1.table_name").
记得替换"keyspace1"
和 "table_name"
以适应你的数据库结构。
应用案例和最佳实践
连接多个集群
如果您需要管理不同目的的服务于不同Cassandra集群,CQERL提供了灵活性:
[
{cqerl,
[
{cassandra_clusters,
[
{cluster1, [
{cassandra_nodes, [{"10.0.0.1", 9042}, {"10.0.0.2", 9042}]},
{keyspace, "keyspace1"}
]},
{cluster2, [
{cassandra_nodes, [{"10.0.0.1", 9042}, {"10.0.0.2", 9042}]},
{keyspace, "keyspace2"}
]}
]
}
]
}
].
这样配置后,可以通过指定集群名来获取特定的客户端:
{ok, Cluster1Client} = cqerl:get_client(cluster1).
自动连接管理和一致性级别调整
为了优化性能,CQERL自动管理连接池,并允许您基于需求调整一致性级别。例如,对于读操作可以设置较低的一致性要求:
cqerl:execute(Client, "SELECT * FROM table", [{consistency, ?CONSISTENCY_ONE}])
典型生态项目
在Erlang/OTP的世界里,与CQERL相辅相成的一个更上层封装是CQEX,它提供了一种更加符合Elixir编程习惯的API,进一步简化了与Cassandra的交互。CQEX构建于CQERL之上,通过更“idiomatic”的方式,使在Elixir项目中使用Cassandra变得更加自然流畅。
以上就是关于CQERL的基本使用和一些高级特性的概述,通过这个教程,你应该能够快速将Cassandra整合到你的Erlang或Elixir应用程序中。持续探索这些工具的不同用法,能够帮助你在分布式存储场景下做出更为健壮的应用设计。
cqerlNative Erlang CQL client for Cassandra项目地址:https://gitcode.com/gh_mirrors/cq/cqerl