FluentCassandra是C#实现的Cassandra的客户端,我来试试看。
英文原文:http://coderjournal.com/2010/06/your-first-fluent-cassandra-application/
第一步,Cassandra准备工作,略。
第二步,Cassandra配置Keyspace,打开cassandra配置文件storage-conf.xml,输入如下Keyspace信息(博客的简单存储):
<Keyspace Name="Blog"> <ColumnFamily Name="Posts" ColumnType="Super" CompareWith="UTF8Type" CompareSubcolumnsWith="UTF8Type" /> <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy> <ReplicationFactor>1</ReplicationFactor> <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch> </Keyspace>
第三步,保存启动Cassandra。
第四步,下载FluentCassandra,位置http://github.com/managedfusion/fluentcassandra
第五步,新建工程,引用FluentCassandra(注意vs版本为2010),以下是主要的测试代码:
using System; using System.Linq; using FluentCassandra; using FluentCassandra.Types; namespace TestClient { internal class Program { private static void Main(string[] args) { using (var db = new CassandraContext(keyspace: "Blog", host: "localhost")) { CassandraSuperColumnFamily<UTF8Type, UTF8Type> family = db.GetColumnFamily<UTF8Type, UTF8Type>("Posts"); dynamic post = family.CreateRecord("first-blog-post"); dynamic post_details = post.CreateSuperColumn(); post_details.Title = "hello"; post_details.Body = "this is my body"; post_details.Author = "medcl"; post_details.PostOn = DateTime.Now; dynamic tags = post.CreateSuperColumn(); tags[0] = "cassandra"; tags[1] = "tutorial"; tags[2] = "NOSQL"; tags[3] = "database"; post.Details = post_details; post.Tags = tags; db.Attach(post); db.SaveChanges(); //here we get the result dynamic getPost = family.Get("first-blog-post").FirstOrDefault(); dynamic get_post_detail = getPost.Details; Console.WriteLine( string.Format("{0}-{1}:{2},Context:{3}", get_post_detail.Title, get_post_detail.Author, (DateTime) get_post_detail.PostOn, get_post_detail.Body) ); Console.WriteLine("Tags:"); dynamic tagz = getPost.Tags; foreach (dynamic tag in tagz) Console.Write(String.Format("{0}:{1},", tag.ColumnName, tag.ColumnValue)); Console.Read(); } } } }
第六步,检测数据是否已经存进Cassandra,打开Cassandra-cli,查询我们的键值(first-blog-post),输入命令:get Blog.Posts['first-blog-post']
返回结果:
cassandra> get Blog.Posts['first-blog-post'] => (super_column=Tags, (column=0, value=cassandra, timestamp=634123696172935592) (column=1, value=tutorial, timestamp=634123696173175592) (column=2, value=NOSQL, timestamp=634123696173385592) (column=3, value=database, timestamp=634123696173595592)) => (super_column=Details, (column=Author, value=medcl, timestamp=634123696172175592) (column=Body, value=this is my body, timestamp=634123696171825592) (column=PostOn, value=?w#dg?, timestamp=634123696172625592) (column=Title, value=hello, timestamp=634123696170405592)) Returned 2 results.
说明成功通过FluentCassandra对Cassandra进行了数据的操作。
第七步,通过FluentCassandra查询获取数据,代码:
//here we get the result dynamic getPost = family.Get("first-blog-post").FirstOrDefault(); dynamic get_post_detail = getPost.Details; Console.WriteLine( string.Format("{0}-{1}:{2},Context:{3}",get_post_detail.Title,get_post_detail.Author,(DateTime)get_post_detail.PostOn,get_post_detail.Body) ); Console.WriteLine("Tags:"); var tagz = getPost.Tags; foreach (var tag in tagz) Console.Write(String.Format("{0}:{1},",tag.ColumnName, tag.ColumnValue)); Console.Read();
输出内容:
hello-medcl:2010/6/18 10:19:59,Context:this is my body Tags: 0:cassandra,1:tutorial,2:NOSQL,
本文来自: FluentCassandra初体验
本页面链接地址(或者引用地址 Trackback)


发表评论