You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by Apache Wiki <wi...@apache.org> on 2009/12/02 00:51:53 UTC

[Cassandra Wiki] Update of "ClientExamples" by JonathanEllis

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "ClientExamples" page has been changed by JonathanEllis.
The comment on this change is: add C# example from http://www.ridgway.co.za/archive/2009/11/06/net-developers-guide-to-getting-started-with-cassandra.aspx (with permission).
http://wiki.apache.org/cassandra/ClientExamples?action=diff&rev1=36&rev2=37

--------------------------------------------------

      main()
  }}}
  
+ == C# ==
+ {{{
+ namespace CassandraDemo
+ {
+     using System;
+     using System.Collections.Generic;
+     using System.Diagnostics;
+ 
+     using Apache.Cassandra;
+     using Thrift.Protocol;
+     using Thrift.Transport;
+ 
+     class Program
+     {
+         static void Main(string[] args)
+         {
+             TTransport transport = new TSocket("localhost", 9160);
+             TProtocol protocol = new TBinaryProtocol(transport);
+             Cassandra.Client client = new Cassandra.Client(protocol);
+             
+             Console.WriteLine("Opening connection");
+             transport.Open();
+ 
+             System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8;
+ 
+             long timeStamp = DateTime.Now.Millisecond;
+             ColumnPath nameColumnPath = new ColumnPath() 
+                                         { 
+                                             Column_family = "Standard1", 
+                                             Column = utf8Encoding.GetBytes("name")
+                                         };
+ 
+             Console.WriteLine("Inserting name columns");
+ 
+             //Insert the data into the column 'name'
+             client.insert("Keyspace1",
+                           "1",
+                           nameColumnPath,
+                           utf8Encoding.GetBytes("Joe Bloggs"),
+                           timeStamp,
+                           ConsistencyLevel.ONE);
+ 
+             client.insert("Keyspace1",
+                           "2",
+                           nameColumnPath,
+                           utf8Encoding.GetBytes("Joe Soap"),
+                           timeStamp,
+                           ConsistencyLevel.ONE);
+ 
+             //Simple single value get using the key to get column 'name'
+             ColumnOrSuperColumn returnedColumn = client.get("Keyspace1", "1", 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("Getting splice range");
+ 
+             //Read an entire row
+             SlicePredicate predicate = new SlicePredicate()
+                                        {
+                                           Slice_range = new SliceRange()
+                                                         {
+                                                             //Start and Finish cannot be null
+                                                             Start = new byte[0], 
+                                                             Finish = new byte[0],
+                                                             Count  = 10,
+                                                             Reversed = false
+                                                         }
+                                        };
+ 
+             ColumnParent parent = new ColumnParent() { Column_family = "Standard1" };
+             Dictionary<string , List<ColumnOrSuperColumn>> results = client.multiget_slice("Keyspace1", 
+                                                                       new List<string>() { "1", "2"}, 
+                                                                       parent, 
+                                                                       predicate, 
+                                                                       ConsistencyLevel.ONE);
+ 
+             foreach (KeyValuePair<string, List<ColumnOrSuperColumn>> resultPair in results)
+             {
+                 Console.WriteLine("Key: {0}", resultPair.Key);
+ 
+                 foreach (ColumnOrSuperColumn resultColumn in resultPair.Value)
+                 {
+                     Column column = resultColumn.Column;
+                     Console.WriteLine("name: {0}, value: {1}", utf8Encoding.GetString(column.Name), utf8Encoding.GetString(column.Value));
+                 }
+             }
+ 
+             Console.WriteLine("Closing connection");
+             transport.Close();
+         }
+     }
+ }
+ }}}
+ 
  == Notes ==
  
  The Cassandra.Client object is always sending its request to the same Cassandra node in the cluster. The server then determines if and where the request should be routed to (Server-based routing). DNS Round Robin or a Cassandra.Client object pool connected to several servers in the cluster can be used to get higher throughput and availability.