private static void ReadPost() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily <UTF8Type>("Posts"); var tagsFamily = db.GetColumnFamily <LongType>("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); dynamic post = postFamily.Get(key).FirstOrDefault(); dynamic tags = tagsFamily.Get(key).FirstOrDefault(); // show details ConsoleHeader("showing post"); Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) { Console.WriteLine(String.Format("{0}:{1},", (long)tag.ColumnName, tag.ColumnValue)); } } }
private static void CreateSecondPost() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "second-blog-post"; var postFamily = db.GetColumnFamily("Posts"); var tagsFamily = db.GetColumnFamily("Tags"); // create post ConsoleHeader("create post"); dynamic post = postFamily.CreateRecord(key: key); post.Title = "My Second Cassandra Post"; post.Body = "Blah. Blah. Blah. about my second post on how great Cassandra is to work with."; post.Author = "Nick Berardi"; post.PostedOn = DateTimeOffset.Now; // create tags ConsoleHeader("create post tags"); dynamic tags = tagsFamily.CreateRecord(key: key); tags[0] = "Cassandra"; tags[1] = ".NET"; tags[2] = "Database"; tags[3] = "NoSQL"; // attach the post to the database ConsoleHeader("attaching record"); db.Attach(post); db.Attach(tags); // save the changes ConsoleHeader("saving changes"); db.SaveChanges(); } }
public CompatibilityCassandraDatabaseSetup(bool reset = false, bool toLower = false, bool toLower2 = false) { this.toLower = toLower; this.toLower2 = toLower2; ConnectionBuilder = new ConnectionBuilder(keyspace: Keyspace, server: Server, cqlVersion: CqlVersion.Cql3); DB = new CassandraContext(ConnectionBuilder); if (DB.KeyspaceExists(Keyspace)) DB.DropKeyspace(Keyspace); var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = Keyspace, }, DB); var exists = DB.KeyspaceExists(Keyspace); if(!exists) keyspace.TryCreateSelf(); Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); UserFamily = DB.GetColumnFamily(toLowerIf(toLower,"Users")); if (exists && !reset) return; ResetDatabase(); }
private static void CreateFirstPost() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily("Posts"); var tagsFamily = db.GetColumnFamily("Tags"); // create post ConsoleHeader("create post"); dynamic post = postFamily.CreateRecord(key: key); post.Title = "My First Cassandra Post"; post.Body = "Blah. Blah. Blah. about my first post on how great Cassandra is to work with."; post.Author = "Nick Berardi"; post.PostedOn = DateTimeOffset.Now; // create tags ConsoleHeader("create post tags"); dynamic tags = tagsFamily.CreateRecord(key: key); tags[0] = "Cassandra"; tags[1] = ".NET"; tags[2] = "Database"; tags[3] = "NoSQL"; // attach the post to the database ConsoleHeader("attaching record"); db.Attach(post); db.Attach(tags); // save the changes ConsoleHeader("saving changes"); db.SaveChanges(); } }
public void Save_Guid() { // arrange var family = _db.GetColumnFamily <TimeUUIDType>(FamilyName); Guid expected = new Guid("38400000-8cf0-11bd-b23e-10b96e4ef00d"); // act family.InsertColumn(TestKey, expected, Math.PI); var actual = family.GetColumn(TestKey, expected); // assert Assert.Equal(expected, (Guid)actual.ColumnName); }
public void TestLinq() { // arrange var insertQuery = @"INSERT INTO ""Users"" (""Id"", ""Name"", ""Email"", ""Age"") VALUES (23, '" + new String('X', 200) + "', '*****@*****.**', 43)"; _db.ExecuteNonQuery(insertQuery); // act var table = _db.GetColumnFamily("Users"); var q = from row in table select row; var actual = q.ToList(); // assert Assert.Equal(6, actual.Count()); }
public _CassandraSetup() { var keyspaceName = "Testing"; var server = new Server("localhost"); if (CassandraSession.KeyspaceExists(server, keyspaceName)) CassandraSession.DropKeyspace(server, keyspaceName); var keyspace = new CassandraKeyspace(keyspaceName); keyspace.TryCreateSelf(server); keyspace.TryCreateColumnFamily<AsciiType>(server, "Standard"); keyspace.TryCreateColumnFamily<AsciiType, AsciiType>(server, "Super"); keyspace.TryCreateColumnFamily<AsciiType>(server, "StandardAsciiType"); keyspace.TryCreateColumnFamily<BytesType>(server, "StandardBytesType"); keyspace.TryCreateColumnFamily<IntegerType>(server, "StandardIntegerType"); keyspace.TryCreateColumnFamily<LexicalUUIDType>(server, "StandardLexicalUUIDType"); keyspace.TryCreateColumnFamily<LongType>(server, "StandardLongType"); keyspace.TryCreateColumnFamily<TimeUUIDType>(server, "StandardTimeUUIDType"); keyspace.TryCreateColumnFamily<UTF8Type>(server, "StandardUTF8Type"); keyspace.TryCreateColumnFamily<UUIDType>(server, "StandardUUIDType"); keyspace.TryCreateColumnFamily<CompositeType<LongType, UTF8Type>>(server, "StandardCompositeType"); keyspace.TryCreateColumnFamily<DynamicCompositeType>(server, "StandardDynamicCompositeType"); DB = new CassandraContext(keyspaceName, server); DB.ThrowErrors = true; Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); Family.RemoveAllRows(); SuperFamily.RemoveAllRows(); Family.InsertColumn(TestKey1, "Test1", Math.PI); Family.InsertColumn(TestKey1, "Test2", Math.PI); Family.InsertColumn(TestKey1, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test3", Math.PI); Family.InsertColumn(TestKey2, "Test1", Math.PI); Family.InsertColumn(TestKey2, "Test2", Math.PI); Family.InsertColumn(TestKey2, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test3", Math.PI); }
private static void DoWork() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { Stopwatch watch = new Stopwatch(); watch.Start(); Random random = new Random(); byte[] data = new byte[dataLength]; random.NextBytes(data); int errors = 0; for (int i = 0; i < count; i++) { // Insert Guid postId = Guid.NewGuid(); string titleName = i.ToString(); var family = db.GetColumnFamily<UTF8Type, UTF8Type>("Posts"); dynamic post = family.CreateRecord(postId); dynamic details = post.CreateSuperColumn(); details.Body = data; post[DateTime.Now] = details; db.Attach(post); db.SaveChanges(); } double rate = count / watch.Elapsed.TotalSeconds; double throughput = rate * data.Length; Console.WriteLine("Completed: " + watch.Elapsed + "\tRate: " + rate + "\tThroughput: " + throughput + "\tErrors:" + errors); } }
private static void CreateComments() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; // get the comments family var commentsFamily = db.GetColumnFamily <TimeUUIDType, UTF8Type>("Comments"); ConsoleHeader("create comments"); dynamic postComments = commentsFamily.CreateRecord(key: key); // lets attach it to the database before we add the comments db.Attach(postComments); // add 5 comments for (int i = 0; i < 5; i++) { dynamic comment = postComments.CreateSuperColumn(); comment.Name = "Nick Berardi"; comment.Email = "*****@*****.**"; comment.Website = "www.coderjournal.com"; comment.Comment = "Wow fluent cassandra is really great and easy to use."; var commentPostedOn = DateTime.Now; postComments[commentPostedOn] = comment; Console.WriteLine("Comment " + (i + 1) + " Posted On " + commentPostedOn.ToLongTimeString()); Thread.Sleep(TimeSpan.FromSeconds(2)); } // save the comments db.SaveChanges(); } }
public void InsertData2(string key1, string key2, Dictionary <string, string> values) { var productFamily = _db.GetColumnFamily("Data"); var key = new CompositeType <AsciiType, AsciiType>(key1, key2); var post = productFamily.CreateRecord(key); _db.Attach(post); foreach (var fieldValue in values) { post.TrySetColumn(fieldValue.Key, fieldValue.Value); } _db.SaveChanges(); }
private static void DoWork() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { Stopwatch watch = new Stopwatch(); watch.Start(); Random random = new Random(); byte[] data = new byte[dataLength]; random.NextBytes(data); int errors = 0; for (int i = 0; i < count; i++) { // Insert Guid postId = Guid.NewGuid(); string titleName = i.ToString(); var family = db.GetColumnFamily <UTF8Type, UTF8Type>("Posts"); dynamic post = family.CreateRecord(postId); dynamic details = post.CreateSuperColumn(); details.Body = data; post[DateTime.Now] = details; db.Attach(post); db.SaveChanges(); } double rate = count / watch.Elapsed.TotalSeconds; double throughput = rate * data.Length; Console.WriteLine("Completed: " + watch.Elapsed + "\tRate: " + rate + "\tThroughput: " + throughput + "\tErrors:" + errors); } }
private static void UpdateFirstPost() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily("Posts"); // get the post back from the database ConsoleHeader("getting 'first-blog-post' for update"); // query using API dynamic post = postFamily.Get(key).FirstOrDefault(); post.Title = post.Title + "(updated)"; post.Body = post.Body + "(updated)"; post.Author = post.Author + "(updated)"; post.PostedOn = DateTimeOffset.Now; // attach the post to the database ConsoleHeader("attaching record"); db.Attach(post); // save the changes ConsoleHeader("saving changes"); db.SaveChanges(); } }
private static void CreateComments() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; // get the comments family var commentsFamily = db.GetColumnFamily<TimeUUIDType, UTF8Type>("Comments"); ConsoleHeader("create comments"); dynamic postComments = commentsFamily.CreateRecord(key: key); // lets attach it to the database before we add the comments db.Attach(postComments); // add 5 comments for (int i = 0; i < 5; i++) { dynamic comment = postComments.CreateSuperColumn(); comment.Name = "Nick Berardi"; comment.Email = "*****@*****.**"; comment.Website = "www.coderjournal.com"; comment.Comment = "Wow fluent cassandra is really great and easy to use."; var commentPostedOn = DateTime.Now; postComments[commentPostedOn] = comment; Console.WriteLine("Comment " + (i + 1) + " Posted On " + commentPostedOn.ToLongTimeString()); Thread.Sleep(TimeSpan.FromSeconds(2)); } // save the comments db.SaveChanges(); } }
public CassandraDatabaseSetup(bool reset = false) { ConnectionBuilder = new ConnectionBuilder(keyspace: Keyspace, server: Server); DB = new CassandraContext(ConnectionBuilder); var exists = DB.KeyspaceExists(Keyspace); Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); UserFamily = DB.GetColumnFamily("Users"); if (exists && !reset) return; ResetDatabase(); }
public void Save_BigInteger() { // arrange var family = _db.GetColumnFamily <IntegerType>(FamilyName); BigInteger expected = 100; // act family.InsertColumn(TestKey, expected, Math.PI); var actual = family.GetColumn(TestKey, expected); // assert Assert.Equal(expected, (BigInteger)actual.ColumnName); }
public void TestInit() { var keyspaceName = "Testing"; var server = new Server("localhost"); _db = new CassandraContext(keyspace: keyspaceName, server: server); _family = _db.GetColumnFamily <AsciiType>("Users"); }
public LinqToCqlObjectsTests() { var keyspaceName = ConfigurationManager.AppSettings["TestKeySpace"]; var server = new Server(ConfigurationManager.AppSettings["TestServer"]); _db = new CassandraContext(keyspace: keyspaceName, server: server); _family = _db.GetColumnFamily<AsciiType>("Users"); }
public LinqToCqlObjectsTests() { var keyspaceName = ConfigurationManager.AppSettings["TestKeySpace"]; var server = new Server(ConfigurationManager.AppSettings["TestServer"]); _db = new CassandraContext(keyspace: keyspaceName, server: server); _family = _db.GetColumnFamily <AsciiType>("Users"); }
public LinqToCqlTests() { var keyspaceName = ConfigurationManager.AppSettings["TestKeySpace"]; var server = new Server(ConfigurationManager.AppSettings["TestServer"]); _db = new CassandraContext(new ConnectionBuilder(keyspace: keyspaceName, server: server, cqlVersion: CqlVersion.Cql)); _family = _db.GetColumnFamily <AsciiType>("Users"); }
public LinqToCqlObjectsTests() { var keyspaceName = "Testing"; var server = new Server("localhost"); _db = new CassandraContext(keyspace: keyspaceName, server: server); _family = _db.GetColumnFamily<AsciiType>("Users"); }
public LinqToCqlTests() { var keyspaceName = ConfigurationManager.AppSettings["TestKeySpace"]; var server = new Server(ConfigurationManager.AppSettings["TestServer"]); _db = new CassandraContext(new ConnectionBuilder(keyspace: keyspaceName, server: server, cqlVersion: CqlVersion.Cql)); _family = _db.GetColumnFamily<AsciiType>("Users"); }
public CassandraDatabaseSetup(bool reset = false, string cqlVersion = CqlVersion.Edge) { ConnectionBuilder = new ConnectionBuilder(keyspace: Keyspace, server: Server, cqlVersion: cqlVersion); DB = new CassandraContext(ConnectionBuilder); var exists = DB.KeyspaceExists(Keyspace); Family = DB.GetColumnFamily <AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily <AsciiType, AsciiType>("Super"); UserFamily = DB.GetColumnFamily("Users"); CounterFamily = DB.GetColumnFamily("Counters"); if (exists && !reset) { return; } ResetDatabase(); }
public void Save_Byte() { // arrange var family = _db.GetColumnFamily <LongType>(FamilyName); byte expected = 100; // act family.InsertColumn(TestKey, expected, Math.PI); var actual = family.GetColumn(TestKey, expected); // assert Assert.Equal(expected, (byte)actual.ColumnName); }
public void CreateRecord_Doesnt_Check_BytesType_Zero_Length() { // arrange var db = new CassandraContext("Test1", "localhost"); var family = db.GetColumnFamily <AsciiType>(FamilyName); // act // assert Assert.Throws <ArgumentException>(delegate { dynamic value = family.CreateRecord(""); }); }
public void CreateRecord_Doesnt_Check_BytesType_Zero_Length() { // arrange var db = new CassandraContext("Test1", "localhost"); var family = db.GetColumnFamily<AsciiType>(FamilyName); // act // assert Assert.Throws<ArgumentException>(delegate { dynamic value = family.CreateRecord(""); }); }
public void Save_BigDecimal() { // arrange var family = _db.GetColumnFamily(FamilyName); BigDecimal expected = 100002334.4563D; // act family.InsertColumn(TestKey, expected, Math.PI); var actual = family.GetColumn(TestKey, expected); // assert Assert.Equal(expected, (BigDecimal)actual.ColumnName); }
private static void ReadFirstPost() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily("Posts"); var tagsFamily = db.GetColumnFamily("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); // query using API dynamic post = postFamily.Get(key).FirstOrDefault(); // query using CQL-LINQ dynamic tags = ( from t in tagsFamily where t.Key == key select t).FirstOrDefault(); // show details ConsoleHeader("showing post"); Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) { Console.WriteLine(String.Format("{0}:{1}", tag.ColumnName, tag.ColumnValue)); } } }
public static void GetPosts() { Console.WriteLine("Getting posts with FluentCassandraSample..."); using (var db = new CassandraContext(keyspace: "blog", host: "localhost")) { var family = db.GetColumnFamily("posts"); var getPost = family.Get("2").FirstOrDefault(); var user = getPost.GetColumn("user").ColumnValue.ToString(); var text = getPost.GetColumn("text").ColumnValue.ToString(); Console.WriteLine(string.Format("User: {0}\tText: {1}", user, text)); } }
public void Save_CompositeType() { // arrange var family = _db.GetColumnFamily(FamilyName); var expected = new CompositeType <LongType, UTF8Type>(300L, "string1"); // act family.InsertColumn(TestKey, expected, Math.PI); var value = family.Get(TestKey).Execute(); var actual = value.FirstOrDefault().Columns.FirstOrDefault(); // assert Assert.Equal((object)expected, (object)actual.ColumnName); }
public void Save_String() { // arrange var family = _db.GetColumnFamily<UTF8Type>(FamilyName); var expected = "Test1"; // act family.InsertColumn(TestKey, expected, Math.PI); _db.SaveChanges(); var actual = family.GetColumn(TestKey, expected); // assert Assert.AreEqual(expected, (string)actual.ColumnName); }
public void Init() { _context = new CassandraContext(keyspace: DummiesKeySpace, host: "localhost"); if (!_context.KeyspaceExists(DummiesKeySpace)) { var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = DummiesKeySpace, }, _context); keyspace.TryCreateSelf(); _context.ExecuteQuery( @" CREATE COLUMNFAMILY Dummies ( KEY ascii PRIMARY KEY, Blob blob );"); _context.SaveChanges(); } _dummies = _context.GetColumnFamily("Dummies"); }
private static void ReadComments() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; var lastDate = DateTime.Now; // get the comments family var commentsFamily = db.GetColumnFamily <TimeUUIDType, UTF8Type>("Comments"); for (int page = 0; page < 2; page++) { // lets back the date off by a millisecond so we don't get paging overlaps lastDate = lastDate.AddMilliseconds(-1D); ConsoleHeader("showing page " + page + " of comments starting at " + lastDate.ToLocalTime()); var comments = commentsFamily.Get(key) .Reverse() .Fetch(lastDate) .Take(3) .FirstOrDefault(); foreach (dynamic comment in comments) { var dateTime = (DateTime)comment.ColumnName; Console.WriteLine(String.Format("{0:T} : {1} ({2} - {3})", dateTime.ToLocalTime(), comment.Name, comment.Email, comment.Website )); lastDate = dateTime; } } } }
private static void ReadAllPosts() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var tagsFamily = db.GetColumnFamily("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); // query using CQL var posts = db.ExecuteQuery("SELECT * FROM Posts LIMIT 25"); // query using API dynamic tags = tagsFamily.Get(key).FirstOrDefault(); // show details ConsoleHeader("showing post"); foreach (dynamic post in posts) { Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); } // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) { Console.WriteLine(String.Format("{0}:{1}", tag.ColumnName, tag.ColumnValue)); } } }
public void TestLinq_InsertSelectDelete() { _db.ExecuteNonQuery(Tools.GetCreateCQL(typeof(Row1))); foreach (var u in Users) { _db.ExecuteNonQuery(Tools.GetInsertCQL(u)); } var query = (from u in _db.GetColumnFamily(typeof(Row1).Name) select u); string Cql = query.ToString(); var all = (query).ToList(); var allL = (from u in all select Tools.GetRowFromCqlRow <Row1>(u)).ToList(); foreach (var a in allL) { _db.ExecuteNonQuery(Tools.GetDeleteCQL(a)); } }
public void ResetDatabase() { using (var session = new CassandraSession(ConnectionBuilder)) using (var db = new CassandraContext(session)) { db.ThrowErrors = true; db.TryDropKeyspace(Keyspace); var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = Keyspace }, db); db.Keyspace = keyspace; keyspace.TryCreateSelf(); keyspace.TryCreateColumnFamily<AsciiType>("Standard"); keyspace.TryCreateColumnFamily<AsciiType, AsciiType>("Super"); keyspace.TryCreateColumnFamily<AsciiType>("StandardAsciiType"); keyspace.TryCreateColumnFamily<BytesType>("StandardBytesType"); keyspace.TryCreateColumnFamily<IntegerType>("StandardIntegerType"); keyspace.TryCreateColumnFamily<LexicalUUIDType>("StandardLexicalUUIDType"); keyspace.TryCreateColumnFamily<LongType>("StandardLongType"); keyspace.TryCreateColumnFamily<TimeUUIDType>("StandardTimeUUIDType"); keyspace.TryCreateColumnFamily<UTF8Type>("StandardUTF8Type"); keyspace.TryCreateColumnFamily<UUIDType>("StandardUUIDType"); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema() { FamilyName = "Counters", ColumnNameType = CassandraType.AsciiType, DefaultColumnValueType = CassandraType.CounterColumnType }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardDecimalType", ColumnNameType = CassandraType.DecimalType }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardCompositeType", ColumnNameType = CassandraType.CompositeType(new[] { CassandraType.AsciiType, CassandraType.DoubleType }) }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardDynamicCompositeType", ColumnNameType = CassandraType.DynamicCompositeType(new Dictionary<char, CassandraType> { { 'a', CassandraType.AsciiType }, { 'd', CassandraType.DoubleType } }) }); db.ExecuteNonQuery(@" CREATE COLUMNFAMILY Users ( Id int PRIMARY KEY, Name ascii, Email ascii, Age int );", CqlVersion.Cql); db.ExecuteNonQuery(@"CREATE INDEX User_Age ON Users (Age);", CqlVersion.Cql); db.Keyspace.ClearCachedKeyspaceSchema(); var family = db.GetColumnFamily<AsciiType>("Standard"); var superFamily = db.GetColumnFamily<AsciiType, AsciiType>("Super"); var userFamily = db.GetColumnFamily("Users"); var counterFamily = db.GetColumnFamily("Counters"); ResetFamily(family); ResetSuperFamily(superFamily); ResetUsersFamily(userFamily); ResetCounterColumnFamily(counterFamily); } }
private static void Main(string[] args) { using (var db = new CassandraContext(keyspace: "Blog", host: "localhost")) { var family = db.GetColumnFamily <UTF8Type, UTF8Type>("Posts"); // create post dynamic post = family.CreateRecord(key: "first-blog-post"); // create post details dynamic postDetails = post.CreateSuperColumn(); postDetails.Title = "My First Cassandra Post"; postDetails.Body = "Blah. Blah. Blah. about my first post on how great Cassandra is to work with."; postDetails.Author = "Nick Berardi"; postDetails.PostedOn = DateTimeOffset.Now; // create post tags dynamic tags = post.CreateSuperColumn(); tags[0] = "Cassandra"; tags[1] = ".NET"; tags[2] = "Database"; tags[3] = "NoSQL"; // add properties to post post.Details = postDetails; post.Tags = tags; // attach the post to the database Console.WriteLine("attaching record"); db.Attach(post); // save the changes Console.WriteLine("saving changes"); db.SaveChanges(); // get the post back from the database Console.WriteLine("getting 'first-blog-post'"); dynamic getPost = family.Get("first-blog-post").FirstOrDefault(); // show details dynamic getPostDetails = getPost.Details; Console.WriteLine( String.Format("=={0} by {1}==\n{2}", getPostDetails.Title, getPostDetails.Author, getPostDetails.Body )); // show tags Console.Write("tags:"); foreach (var tag in getPost.Tags) { Console.Write(String.Format("{0}:{1},", tag.ColumnName, tag.ColumnValue)); } Console.WriteLine(); // get the comments family var commentsFamily = db.GetColumnFamily <TimeUUIDType, UTF8Type>("Comments"); dynamic postComments = commentsFamily.CreateRecord(key: "first-blog-post"); // lets attach it to the database before we add the comments db.Attach(postComments); // add 5 comments for (int i = 0; i < 5; i++) { dynamic comment = postComments.CreateSuperColumn(); comment.Name = i + " Nick Berardi"; comment.Email = i + " [email protected]"; comment.Website = i + " www.coderjournal.com"; comment.Comment = i + " Wow fluent cassandra is really great and easy to use."; postComments[GuidGenerator.GenerateTimeBasedGuid()] = comment; Console.WriteLine("Comment " + i + " Done"); Thread.Sleep(TimeSpan.FromSeconds(5)); } // save the comments db.SaveChanges(); DateTime lastDate = DateTime.Now; for (int page = 0; page < 2; page++) { // lets back the date off by a millisecond so we don't get paging overlaps lastDate = lastDate.AddMilliseconds(-1D); Console.WriteLine("Showing page " + page + " starting at " + lastDate.ToLocalTime()); var comments = commentsFamily.Get("first-blog-post") .Reverse() .Fetch(lastDate) .Take(3) .FirstOrDefault(); foreach (dynamic comment in comments) { var dateTime = GuidGenerator.GetDateTime((Guid)comment.ColumnName); Console.WriteLine(String.Format("{0:T} : {1} ({2} - {3})", dateTime.ToLocalTime(), comment.Name, comment.Email, comment.Website )); lastDate = dateTime; } } } Console.Read(); }
private static void ReadFirstPost() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily("Posts"); var tagsFamily = db.GetColumnFamily("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); // query using API dynamic post = postFamily.Get(key).FirstOrDefault(); // query using CQL-LINQ dynamic tags = ( from t in tagsFamily where t.Key == key select t).FirstOrDefault(); // show details ConsoleHeader("showing post"); Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) Console.WriteLine(String.Format("{0}:{1}", tag.ColumnName, tag.ColumnValue)); } }
private static void Main(string[] args) { var keyspaceName = "Blog"; var server = new Server("localhost"); if (!CassandraSession.KeyspaceExists(server, keyspaceName)) CassandraSession.AddKeyspace(server, new KsDef { Name = keyspaceName, Replication_factor = 1, Strategy_class = "org.apache.cassandra.locator.SimpleStrategy", Cf_defs = new List<CfDef>() }); var keyspace = new CassandraKeyspace(keyspaceName); if (!keyspace.ColumnFamilyExists(server, "Posts")) keyspace.AddColumnFamily(server, new CfDef { Name = "Posts", Keyspace = keyspaceName, Column_type = "Super", Comparator_type = "UTF8Type", Subcomparator_type = "UTF8Type", Comment = "Used for blog posts." }); if (!keyspace.ColumnFamilyExists(server, "Comments")) keyspace.AddColumnFamily(server, new CfDef { Name = "Comments", Keyspace = keyspaceName, Column_type = "Super", Comparator_type = "TimeUUIDType", Subcomparator_type = "UTF8Type", Comment = "Used for blog post comments." }); using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var family = db.GetColumnFamily<UTF8Type, UTF8Type>("Posts"); // create post dynamic post = family.CreateRecord(key: "first-blog-post"); // create post details dynamic postDetails = post.CreateSuperColumn(); postDetails.Title = "My First Cassandra Post"; postDetails.Body = "Blah. Blah. Blah. about my first post on how great Cassandra is to work with."; postDetails.Author = "Nick Berardi"; postDetails.PostedOn = DateTimeOffset.Now; // create post tags dynamic tags = post.CreateSuperColumn(); tags[0] = "Cassandra"; tags[1] = ".NET"; tags[2] = "Database"; tags[3] = "NoSQL"; // add properties to post post.Details = postDetails; post.Tags = tags; // attach the post to the database Console.WriteLine("attaching record"); db.Attach(post); // save the changes Console.WriteLine("saving changes"); db.SaveChanges(); // get the post back from the database Console.WriteLine("getting 'first-blog-post'"); dynamic getPost = family.Get("first-blog-post").FirstOrDefault(); // show details dynamic getPostDetails = getPost.Details; Console.WriteLine( String.Format("=={0} by {1}==\n{2}", getPostDetails.Title, getPostDetails.Author, getPostDetails.Body )); // show tags Console.Write("tags:"); foreach (var tag in getPost.Tags) Console.Write(String.Format("{0}:{1},", tag.ColumnName, tag.ColumnValue)); Console.WriteLine(); // get the comments family var commentsFamily = db.GetColumnFamily<TimeUUIDType, UTF8Type>("Comments"); dynamic postComments = commentsFamily.CreateRecord(key: "first-blog-post"); // lets attach it to the database before we add the comments db.Attach(postComments); // add 5 comments for (int i = 0; i < 5; i++) { dynamic comment = postComments.CreateSuperColumn(); comment.Name = i + " Nick Berardi"; comment.Email = i + " [email protected]"; comment.Website = i + " www.coderjournal.com"; comment.Comment = i + " Wow fluent cassandra is really great and easy to use."; postComments[GuidGenerator.GenerateTimeBasedGuid()] = comment; Console.WriteLine("Comment " + i + " Done"); Thread.Sleep(TimeSpan.FromSeconds(5)); } // save the comments db.SaveChanges(); DateTime lastDate = DateTime.Now; for (int page = 0; page < 2; page++) { // lets back the date off by a millisecond so we don't get paging overlaps lastDate = lastDate.AddMilliseconds(-1D); Console.WriteLine("Showing page " + page + " starting at " + lastDate.ToLocalTime()); var comments = commentsFamily.Get("first-blog-post") .Reverse() .Fetch(lastDate) .Take(3) .FirstOrDefault(); foreach (dynamic comment in comments) { var dateTime = GuidGenerator.GetDateTime((Guid)comment.ColumnName); Console.WriteLine(String.Format("{0:T} : {1} ({2} - {3})", dateTime.ToLocalTime(), comment.Name, comment.Email, comment.Website )); lastDate = dateTime; } } } Console.Read(); }
public _CassandraSetup() { var keyspaceName = "Testing"; var server = new Server("localhost"); if (!CassandraSession.KeyspaceExists(server, keyspaceName)) { CassandraSession.AddKeyspace(server, new KsDef { Name = "Testing", Replication_factor = 1, Strategy_class = "org.apache.cassandra.locator.SimpleStrategy", Cf_defs = new List <CfDef>() }); } var keyspace = new CassandraKeyspace(keyspaceName); if (!keyspace.ColumnFamilyExists(server, "Standard")) { keyspace.AddColumnFamily(server, new CfDef { Name = "Standard", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "AsciiType", Comment = "Used for testing Standard family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardAsciiType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardAsciiType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "AsciiType", Comment = "Used for testing Standard family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardBytesType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardBytesType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "BytesType", Comment = "Used for testing BytesType family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardIntegerType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardIntegerType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "IntegerType", Comment = "Used for testing IntegerType family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardLexicalUUIDType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardLexicalUUIDType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "LexicalUUIDType", Comment = "Used for testing LexicalUUIDType family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardLongType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardLongType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "LongType", Comment = "Used for testing LongType family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardTimeUUIDType")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardTimeUUIDType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "TimeUUIDType", Comment = "Used for testing TimeUUIDType family." }); } if (!keyspace.ColumnFamilyExists(server, "StandardUTF8Type")) { keyspace.AddColumnFamily(server, new CfDef { Name = "StandardUTF8Type", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "UTF8Type", Comment = "Used for testing UTF8Type family." }); } if (!keyspace.ColumnFamilyExists(server, "Super")) { keyspace.AddColumnFamily(server, new CfDef { Name = "Super", Keyspace = "Testing", Column_type = "Super", Comparator_type = "AsciiType", Subcomparator_type = "AsciiType", Comment = "Used for testing Super family." }); } DB = new CassandraContext(keyspaceName, server); DB.ThrowErrors = true; Family = DB.GetColumnFamily <AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily <AsciiType, AsciiType>("Super"); Family.RemoveAllRows(); SuperFamily.RemoveAllRows(); Family.InsertColumn(TestKey1, "Test1", Math.PI); Family.InsertColumn(TestKey1, "Test2", Math.PI); Family.InsertColumn(TestKey1, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test3", Math.PI); Family.InsertColumn(TestKey2, "Test1", Math.PI); Family.InsertColumn(TestKey2, "Test2", Math.PI); Family.InsertColumn(TestKey2, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test3", Math.PI); }
public void ResetDatabase() { using (var session = new CassandraSession(ConnectionBuilder)) using (var db = new CassandraContext(session)) { db.ThrowErrors = true; db.TryDropKeyspace(Keyspace); var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = Keyspace }, db); db.Keyspace = keyspace; keyspace.TryCreateSelf(); keyspace.TryCreateColumnFamily <AsciiType>("Standard"); keyspace.TryCreateColumnFamily <AsciiType, AsciiType>("Super"); keyspace.TryCreateColumnFamily <AsciiType>("StandardAsciiType"); keyspace.TryCreateColumnFamily <BytesType>("StandardBytesType"); keyspace.TryCreateColumnFamily <IntegerType>("StandardIntegerType"); keyspace.TryCreateColumnFamily <LexicalUUIDType>("StandardLexicalUUIDType"); keyspace.TryCreateColumnFamily <LongType>("StandardLongType"); keyspace.TryCreateColumnFamily <TimeUUIDType>("StandardTimeUUIDType"); keyspace.TryCreateColumnFamily <UTF8Type>("StandardUTF8Type"); keyspace.TryCreateColumnFamily <UUIDType>("StandardUUIDType"); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema() { FamilyName = "Counters", ColumnNameType = CassandraType.AsciiType, DefaultColumnValueType = CassandraType.CounterColumnType }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema(type: ColumnType.Super) { FamilyName = "SuperCounters", SuperColumnNameType = CassandraType.AsciiType, ColumnNameType = CassandraType.AsciiType, DefaultColumnValueType = CassandraType.CounterColumnType }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardDecimalType", ColumnNameType = CassandraType.DecimalType }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardCompositeType", ColumnNameType = CassandraType.CompositeType(new[] { CassandraType.AsciiType, CassandraType.DoubleType }) }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardDynamicCompositeType", ColumnNameType = CassandraType.DynamicCompositeType(new Dictionary <char, CassandraType> { { 'a', CassandraType.AsciiType }, { 'd', CassandraType.DoubleType } }) }); db.ExecuteNonQuery(@" CREATE COLUMNFAMILY ""Users"" ( Id int PRIMARY KEY, Name ascii, Email ascii, Age int );"); db.ExecuteNonQuery(@"CREATE INDEX User_Age ON ""Users"" (Age);"); db.ExecuteNonQuery(@" CREATE COLUMNFAMILY Cql3List ( Id int PRIMARY KEY, TagList list<text> --list of strings );"); db.ExecuteNonQuery(@" CREATE COLUMNFAMILY Cql3Set ( Id int PRIMARY KEY, TagSet set<uuid> --set of Guids );"); db.ExecuteNonQuery(@" CREATE COLUMNFAMILY Cql3Map ( Id int PRIMARY KEY, TagMap map<bigint,uuid> --map of long integers and Guids );"); db.Keyspace.ClearCachedKeyspaceSchema(); var family = db.GetColumnFamily <AsciiType>("Standard"); var superFamily = db.GetColumnFamily <AsciiType, AsciiType>("Super"); var userFamily = db.GetColumnFamily("Users"); var counterFamily = db.GetColumnFamily("Counters"); ResetFamily(family); ResetSuperFamily(superFamily); ResetUsersFamily(userFamily); ResetCounterColumnFamily(counterFamily); } }
public _CassandraSetup() { var keyspaceName = "Testing"; var server = new Server("localhost"); if (!CassandraSession.KeyspaceExists(server, keyspaceName)) CassandraSession.AddKeyspace(server, new KsDef { Name = "Testing", Replication_factor = 1, Strategy_class = "org.apache.cassandra.locator.SimpleStrategy", Cf_defs = new List<CfDef>() }); var keyspace = new CassandraKeyspace(keyspaceName); if (!keyspace.ColumnFamilyExists(server, "Standard")) keyspace.AddColumnFamily(server, new CfDef { Name = "Standard", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "AsciiType", Comment = "Used for testing Standard family." }); if (!keyspace.ColumnFamilyExists(server, "StandardAsciiType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardAsciiType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "AsciiType", Comment = "Used for testing Standard family." }); if (!keyspace.ColumnFamilyExists(server, "StandardBytesType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardBytesType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "BytesType", Comment = "Used for testing BytesType family." }); if (!keyspace.ColumnFamilyExists(server, "StandardIntegerType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardIntegerType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "IntegerType", Comment = "Used for testing IntegerType family." }); if (!keyspace.ColumnFamilyExists(server, "StandardLexicalUUIDType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardLexicalUUIDType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "LexicalUUIDType", Comment = "Used for testing LexicalUUIDType family." }); if (!keyspace.ColumnFamilyExists(server, "StandardLongType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardLongType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "LongType", Comment = "Used for testing LongType family." }); if (!keyspace.ColumnFamilyExists(server, "StandardTimeUUIDType")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardTimeUUIDType", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "TimeUUIDType", Comment = "Used for testing TimeUUIDType family." }); if (!keyspace.ColumnFamilyExists(server, "StandardUTF8Type")) keyspace.AddColumnFamily(server, new CfDef { Name = "StandardUTF8Type", Keyspace = "Testing", Column_type = "Standard", Comparator_type = "UTF8Type", Comment = "Used for testing UTF8Type family." }); if (!keyspace.ColumnFamilyExists(server, "Super")) keyspace.AddColumnFamily(server, new CfDef { Name = "Super", Keyspace = "Testing", Column_type = "Super", Comparator_type = "AsciiType", Subcomparator_type = "AsciiType", Comment = "Used for testing Super family." }); DB = new CassandraContext(keyspaceName, server); DB.ThrowErrors = true; Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); Family.RemoveAllRows(); SuperFamily.RemoveAllRows(); Family.InsertColumn(TestKey1, "Test1", Math.PI); Family.InsertColumn(TestKey1, "Test2", Math.PI); Family.InsertColumn(TestKey1, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test3", Math.PI); Family.InsertColumn(TestKey2, "Test1", Math.PI); Family.InsertColumn(TestKey2, "Test2", Math.PI); Family.InsertColumn(TestKey2, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test3", Math.PI); }
public void ResetDatabase() { using (var session = new CassandraSession(ConnectionBuilder)) using (var db = new CassandraContext(session)) { db.ThrowErrors = true; db.TryDropKeyspace(Keyspace); var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = Keyspace }, db); db.Keyspace = keyspace; keyspace.TryCreateSelf(); keyspace.TryCreateColumnFamily<AsciiType>("Standard"); keyspace.TryCreateColumnFamily<AsciiType, AsciiType>("Super"); keyspace.TryCreateColumnFamily<AsciiType>("StandardAsciiType"); keyspace.TryCreateColumnFamily<BytesType>("StandardBytesType"); keyspace.TryCreateColumnFamily<IntegerType>("StandardIntegerType"); keyspace.TryCreateColumnFamily<LexicalUUIDType>("StandardLexicalUUIDType"); keyspace.TryCreateColumnFamily<LongType>("StandardLongType"); keyspace.TryCreateColumnFamily<TimeUUIDType>("StandardTimeUUIDType"); keyspace.TryCreateColumnFamily<UTF8Type>("StandardUTF8Type"); keyspace.TryCreateColumnFamily<UUIDType>("StandardUUIDType"); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardCompositeType", ColumnNameType = CassandraType.CompositeType(new[] { CassandraType.AsciiType, CassandraType.DoubleType }) }); keyspace.TryCreateColumnFamily(new CassandraColumnFamilySchema { FamilyName = "StandardDynamicCompositeType", ColumnNameType = CassandraType.DynamicCompositeType(new Dictionary<char, CassandraType> { { 'a', CassandraType.AsciiType }, { 'd', CassandraType.DoubleType } }) }); db.ExecuteNonQuery(string.Format(@" CREATE TABLE {0} ( id int , name ascii, email ascii, age int, PRIMARY KEY(id) );", toLowerIf(toLower, "Users"))); //db.ExecuteNonQuery(@"CREATE INDEX User_Age ON users (Age);"); db.Keyspace.ClearCachedKeyspaceSchema(); var family = db.GetColumnFamily<AsciiType>("Standard"); var superFamily = db.GetColumnFamily<AsciiType, AsciiType>("Super"); var userFamily = db.GetColumnFamily(toLowerIf(toLower, "Users")); ResetFamily(family); ResetSuperFamily(superFamily); ResetUsersFamily(userFamily); } }
private static void ReadAllPosts() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; var tagsFamily = db.GetColumnFamily("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); // query using CQL var posts = db.ExecuteQuery("SELECT * FROM Posts LIMIT 25"); // query using API dynamic tags = tagsFamily.Get(key).FirstOrDefault(); // show details ConsoleHeader("showing post"); foreach (dynamic post in posts) { Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); } // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) Console.WriteLine(String.Format("{0}:{1}", tag.ColumnName, tag.ColumnValue)); } }
public CassandraDatabaseSetup(bool volitile = false) { var keyspaceName = "Testing"; var server = new Server("localhost"); DB = new CassandraContext(keyspaceName, server); DB.ThrowErrors = true; var exists = DB.KeyspaceExists(keyspaceName); Users = new[] { new User { Id = 1, Name = "Darren Gemmell", Email = "*****@*****.**", Age = 32 }, new User { Id = 2, Name = "Fernando Laubscher", Email = "*****@*****.**", Age = 23 }, new User { Id = 3, Name = "Cody Millhouse", Email = "*****@*****.**", Age = 56 }, new User { Id = 4, Name = "Emilia Thibert", Email = "*****@*****.**", Age = 67 }, new User { Id = 5, Name = "Allyson Schurr", Email = "*****@*****.**", Age = 21 } }; Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); UserFamily = DB.GetColumnFamily("Users"); if (exists && !volitile) return; using (var session = DB.OpenSession()) { if (exists) DB.DropKeyspace(keyspaceName); var keyspace = new CassandraKeyspace(new CassandraKeyspaceSchema { Name = keyspaceName, Strategy = CassandraKeyspaceSchema.ReplicaPlacementStrategySimple, ReplicationFactor = 1 }, DB); DB.Keyspace = keyspace; keyspace.TryCreateSelf(); keyspace.TryCreateColumnFamily<AsciiType>("Standard"); keyspace.TryCreateColumnFamily<AsciiType, AsciiType>("Super"); keyspace.TryCreateColumnFamily<AsciiType>("StandardAsciiType"); keyspace.TryCreateColumnFamily<BytesType>("StandardBytesType"); keyspace.TryCreateColumnFamily<IntegerType>("StandardIntegerType"); keyspace.TryCreateColumnFamily<LexicalUUIDType>("StandardLexicalUUIDType"); keyspace.TryCreateColumnFamily<LongType>("StandardLongType"); keyspace.TryCreateColumnFamily<TimeUUIDType>("StandardTimeUUIDType"); keyspace.TryCreateColumnFamily<UTF8Type>("StandardUTF8Type"); keyspace.TryCreateColumnFamily<UUIDType>("StandardUUIDType"); keyspace.TryCreateColumnFamily<CompositeType<LongType, UTF8Type>>("StandardCompositeType"); keyspace.TryCreateColumnFamily<DynamicCompositeType>("StandardDynamicCompositeType"); Family = DB.GetColumnFamily<AsciiType>("Standard"); SuperFamily = DB.GetColumnFamily<AsciiType, AsciiType>("Super"); Family.InsertColumn(TestKey1, "Test1", Math.PI); Family.InsertColumn(TestKey1, "Test2", Math.PI); Family.InsertColumn(TestKey1, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey1, TestSuperName, "Test3", Math.PI); Family.InsertColumn(TestKey2, "Test1", Math.PI); Family.InsertColumn(TestKey2, "Test2", Math.PI); Family.InsertColumn(TestKey2, "Test3", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test1", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test2", Math.PI); SuperFamily.InsertColumn(TestKey2, TestSuperName, "Test3", Math.PI); DB.ExecuteNonQuery(@" CREATE COLUMNFAMILY Users ( KEY int PRIMARY KEY, Name ascii, Email ascii, Age int );"); DB.ExecuteNonQuery(@"CREATE INDEX User_Age ON Users (Age);"); DB.Keyspace.ClearCachedKeyspaceSchema(); UserFamily = DB.GetColumnFamily("Users"); foreach (var user in Users) { dynamic record = UserFamily.CreateRecord(user.Id); record.Name = user.Name; record.Email = user.Email; record.Age = user.Age; DB.Attach(record); } DB.SaveChanges(); } }
private static void ReadPost() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; var postFamily = db.GetColumnFamily<UTF8Type>("Posts"); var tagsFamily = db.GetColumnFamily<LongType>("Tags"); // get the post back from the database ConsoleHeader("getting 'first-blog-post'"); dynamic post = postFamily.Get(key).FirstOrDefault(); dynamic tags = tagsFamily.Get(key).FirstOrDefault(); // show details ConsoleHeader("showing post"); Console.WriteLine( String.Format("=={0} by {1}==\n{2}", post.Title, post.Author, post.Body )); // show tags ConsoleHeader("showing tags"); foreach (var tag in tags) Console.WriteLine(String.Format("{0}:{1},", (long)tag.ColumnName, tag.ColumnValue)); } }
private static void ReadComments() { using (var db = new CassandraContext(keyspace: keyspaceName, server: server)) { var key = "first-blog-post"; var lastDate = DateTime.Now; // get the comments family var commentsFamily = db.GetColumnFamily<TimeUUIDType, UTF8Type>("Comments"); for (int page = 0; page < 2; page++) { // lets back the date off by a millisecond so we don't get paging overlaps lastDate = lastDate.AddMilliseconds(-1D); ConsoleHeader("showing page " + page + " of comments starting at " + lastDate.ToLocalTime()); var comments = commentsFamily.Get(key) .Reverse() .Fetch(lastDate) .Take(3) .FirstOrDefault(); foreach (dynamic comment in comments) { var dateTime = (DateTime)comment.ColumnName; Console.WriteLine(String.Format("{0:T} : {1} ({2} - {3})", dateTime.ToLocalTime(), comment.Name, comment.Email, comment.Website )); lastDate = dateTime; } } } }