csharp-driver, Apache Cassandra的DataStax C# 驱动程序

分享于 

9分钟阅读

GitHub

 
DataStax C# Driver for Apache Cassandra
  • 源代码名称:csharp-driver
  • 源代码网址:http://www.github.com/datastax/csharp-driver
  • csharp-driver源代码文档
  • csharp-driver源代码下载
  • Git URL:
    git://www.github.com/datastax/csharp-driver.git
    Git Clone代码到本地:
    git clone http://www.github.com/datastax/csharp-driver
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/datastax/csharp-driver
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    :Apache的C# 驱动程序

    A ( 1.2 + ) 具有丰富的和高度可调的C# 客户端库,它使用了Cassandra协议和Cassandra查询语言v3的专用二进制客户端库。 ,使用 DSE C# 驱动程序更好的兼容性和对DataStax企业服务的支持。

    驱动程序支持. NET 框架 4.5 + 和. NET 内核 1 +。

    安装

    把它放在Nuget上。

    PM> Install-Package CassandraCSharpDriver

    特性

    文档

    获取帮助

    可以在Jira中使用项目邮件 List 或者在Jira问题跟踪器创建票证。 另外,你可以使用 DataStax学院中的#datastax-drivers 频道来缓解

    从以前版本升级

    如果要升级到 DataStax企业,请使用 DSE C# 驱动器以获得更多功能和更好的兼容性。

    如果从驱动程序的2.1分支升级,请务必查看升级指南。

    如果从驱动程序的1.x 分支升级,请遵循升级指南到 2.0,然后执行上述文档。

    基本用法

    varcluster = Cluster.Builder()
    . AddContactPoints("host1")
    . Build();//Connect to the nodes using a keyspacevarsession = cluster.Connect("sample_keyspace");//Execute a query on a connection synchronouslyvarrs = session.Execute("SELECT * FROM sample_table");//Iterate through the RowSetforeach (var row in rs)
    {
     varvalue = row.GetValue<int>("sample_int_column");
     //Do something with the value}

    准备语句

    为查询准备一次并绑定不同的参数以获得最佳性能。

    //Prepare a statement oncevarps = session.Prepare("UPDATE user_profiles SET birth=? WHERE key=?");//...bind different parameters every time you need to executevarstatement = ps.Bind(new DateTime(1942, 11, 27),"hendrix");//Execute the bound statement with the provided parameterssession.Execute(statement);

    批处理语句

    在批处理中可以执行多个语句( 准备或者未准备就绪) 以更新/插入多个行,即使是在不同的列族中。

    //Prepare the statements involved in a profile update oncevarprofileStmt = session.Prepare("UPDATE user_profiles SET email=? WHERE key=?");varuserTrackStmt = session.Prepare("INSERT INTO user_track (key, text, date) VALUES (?,?,?)");//...you should reuse the prepared statement//Bind the parameters and add the statement to the batch batchvarbatch = newBatchStatement()
    . Add(profileStmt.Bind(emailAddress, "hendrix"))
    . Add(userTrackStmt.Bind("hendrix", "You changed your email", DateTime.Now));//Execute the batchsession.Execute(batch);

    基于的异步 API

    会话允许异步执行语句( 对于任何类型的语句: 通过公开 ExecuteAsync 方法实现简单。绑定或者批处理。

    //Execute a statement asynchronously using awaitvarrs = awaitsession.ExecuteAsync(statement);

    避免样板映射代码

    驱动程序具有内置的MapperLinq组件,可以用于避免在cql行和应用程序实体之间的样板映射代码。

    Useruser = mapper.Single<User>("SELECT name, email FROM users WHERE id =?", userId);

    有关详细信息,请参阅驱动程序组件文档

    自动分页结果

    RowSet 中,可以无限循环地迭代所提取的行,直到客户端上的可用行耗尽为止。

    varstatement = newSimpleStatement("SELECT * from large_table");//Set the page size, in this case the RowSet will not contain more than 1000 at any timestatement.SetPageSize(1000);varrs = session.Execute(statement);foreach (var row in rs)
    {
     //The enumerator will yield all the rows from Cassandra//Retrieving them in the back in blocks of 1000.}

    用户定义的类型映射

    你可以将你的用户定义类型映射到你的应用程序实体。

    对于给定的udt

    CREATETYPEaddress (
     street text,
     city text,
     zip_code int,
     phones set<text>);

    对于给定类

    publicclassAddress{
     public stringStreet { get; set; }
     public stringCity { get; set; }
     public intZipCode { get; set; }
     public IEnumerable<string> Phones { get; set;}
    }

    你可以按名称映射属性

    //Map the properties by name automaticallysession.UserDefinedTypes.Define(
     UdtMap.For<Address>()
    );

    或者你可以手动定义属性

    session.UserDefinedTypes.Define(
     UdtMap.For<Address>()
    . Map(a => a.Street, "street")
    . Map(a => a.City, "city")
    . Map(a => a.ZipCode, "zip_code")
    . Map(a => a.Phones, "phones")
    );

    你应该在你的entity 你的UDT,你就可以在所有应用程序生命周期中使用映射。

    varrs = session.Execute("SELECT id, name, address FROM users where id = x");varrow = rs.First();//You can retrieve the field as a value of type AddressvaruserAddress = row.GetValue<Address>("address");Console.WriteLine("user lives on {0} Street", userAddress.Street);

    设置群集和语句执行选项

    你可以设置驱动程序如何连接到节点和执行选项的选项。

    //Example at cluster levelvarcluster = Cluster. Builder()
    . AddContactPoints(hosts)
    . WithCompression(CompressionType.LZ4)
    . WithLoadBalancingPolicy(newDCAwareRoundRobinPolicy("west"));//Example at statement (simple, bound, batch) levelvarstatement = newSimpleStatement(query)
    . SetConsistencyLevel(ConsistencyLevel.Quorum)
    . SetRetryPolicy(DowngradingConsistencyRetryPolicy.Instance)
    . SetPageSize(1000);

    兼容性

    • Apache Cassandra版本 2.0及上版本。
    • DataStax企业版 4.5和更高版本。
    • .NET 框架版本 4.5及上,.NET 核心版本 1.0和更高版本。

    注:DataStax产品不支持大的前端系统。

    反馈请求

    帮助我们集中精力 ! 在平台和运行时调查 ( 我们保持简短) Provide提供你的输入。

    构建和运行测试

    你可以使用 Visual Studio 或者msbuild来构建解决方案。

    检查文档以从源代码生成驱动程序并运行测试。

    许可证

    版权所有 2012 -2017,DataStax。

    在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 你可以获得许可证的副本在*

    http://www.apache.org/licenses/LICENSE-2.0

    在规定的法律或者书面许可下,在许可条款下分发的软件在不保证任何种类的担保或者条件的前提下分发,或者明示或者隐含。 查看许可协议下特定语言的许可权限和限制的许可证。


    相关文章