zoukankan      html  css  js  c++  java
  • Step by Step C# operate NOSQL base on Cassandra

    2010NOSQL技术似乎是发展最快的几个概念之一,相信好多朋友也都和我一样,愿意尝试新东西,网络上面关于NOSQL的东西还不是很多,你也可以说很多,但是大部分是复制粘贴的,不成什么体系,也可能是本人眼界有限,如果有的话望高人指点。另一方面,NOSQL这个东西发展很快,好多CODE在有些版本上面可以RUN,但是版本更新了就不行了。其实我的目的很简单,用C#写一个Demo, Cassandra里面写条数据,然后再读出来,下面,Let’s go!

    1.首先配置Cassandra,去http://cassandra.apache.org/上面下一个最新的就ok

    我用的是这个:apache-cassandra-0.7.3-bin.tar.gz

    2.解压缩上面的包,并安装Java 虚拟机并配置环境变量JAVA_HOME, CASSANDRA_HOME, 分别设置为Java路径和解压缩后的Cassandra路径。

    3. cassandra.bat 启动Cassandra 可以用cassandra-cli.bat 测试一下你的Cassandra数据库。

    4. http://thrift.apache.org/下载一个最新版本的Thrift,解压缩并取出

    thrift-0.6.0\thrift\lib\csharp\src Thrift.slnbuild it 得到一个Thrift.dll

    5. http://thrift.apache.org/ 下载一个最新版本的Thrift.exe

    切换到cassandrainterface目录, run thrift -gen csharp cassandra.thrift  命令, 生成: gen-csharp folder

    6. 建一个C#工程, gen-csharp folder下面的code加进去,并且添加引用Thrift.dll

     

    7.CODE 下面是我参照网上的资料写的一个简单Demo:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using Thrift.Transport;

    using Thrift.Protocol;

    using Apache.Cassandra;

     

    //If the keyspace or column family not exist we need add them using the following cmd

    /* Create a new keyspace */

    //create keyspace Keyspace1;

     

    /* Switch to the new keyspace */

    //use Keyspace1;

     

    /* Create new column families */

    //create column family Standard1 with column_type = 'Standard' and comparator = 'BytesType';

     

     

    namespace ConsoleCassandraDemo

    {

        class Program

        {

            static void Main(string[] args)

            {

               

                //Data define

                System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8;

                long timeStamp = DateTime.Now.Millisecond;

     

                //Server Location

    TTransport FTransport = new TFramedTransport(new TSocket("localhost", 9160));

     

                TProtocol FProtocol = new TBinaryProtocol(FTransport);

     

                Cassandra.Client client = new Cassandra.Client(FProtocol, FProtocol);

     

                FTransport.Open();

                Console.WriteLine("Connection...");

      

                client.set_keyspace("Keyspace1");

                Console.WriteLine("Set keyspace...");

     

                ColumnPath nameColumnPath = new ColumnPath()

                {

                    Column_family = "Standard1",

                    Column = utf8Encoding.GetBytes("name")

                };

     

                ColumnParent nameColumnParent = new ColumnParent()

                {

                    Column_family = "Standard1"

                };

     

                Column nameColume = new Column()

                {

                    Name = utf8Encoding.GetBytes("name"),

                    Value = utf8Encoding.GetBytes("Drift UFO2"),

                    Timestamp = timeStamp

                };

     

                Console.WriteLine("Inserting name columns");

     

                //Insert column names

                client.insert(utf8Encoding.GetBytes("KKP"),

                              nameColumnParent,

                              nameColume,

                              ConsistencyLevel.ONE);

     

                //Get the value using key

                ColumnOrSuperColumn returnedColumn = client.get(utf8Encoding.GetBytes("KKP"), nameColumnPath, ConsistencyLevel.ONE);

     

                Console.WriteLine(

                            "Column Data in Keyspace1/Standard1: name: {0}, value: {1}",

                                    utf8Encoding.GetString(returnedColumn.Column.Name),

                                    utf8Encoding.GetString(returnedColumn.Column.Value));

     

                Console.WriteLine("Connection closing");

                FTransport.Close();

     

                Console.ReadLine();  

     

            }

        }

    }

    8.Please run this code after start the Cassandra, Enjoy…

  • 相关阅读:
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel2.0编写一个操作系统内核
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    如何评测软件工程知识技能水平?
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    创新产品的需求分析:未来的图书会是什么样子?
    构建调试Linux内核网络代码的环境MenuOS系统
    解决npm ERR! code ELIFECYCLE npm ERR! errno 1问题
  • 原文地址:https://www.cnblogs.com/pugang/p/1981624.html
Copyright © 2011-2022 走看看