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 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(); } }
private static void CreateComments() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "lista_razgovori"; // get the comments family var commentsFamily = db.GetSuperColumnFamily("razgovor"); var postComments = commentsFamily.CreateRecord(key: key); // lets attach it to the database before we add the comments db.Attach(postComments); var comment = postComments.CreateSuperColumn(); postComments["3"] = comment; comment["broj_a"] = "070441113"; comment["broj_b"] = "078487693"; comment["dolzina"] = "28"; comment["vreme"] = "23.11.2013 10:44:32"; db.SaveChanges(); db.ExecuteNonQuery("INSERT INTO poraka(naslov, sodrzina) VALUES ('test 2 naslov','test 2 sodrzina')"); } }
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(); } }
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 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(); }
public void Save(Dummy dummy) { dynamic d = _dummies.CreateRecord(dummy.Id); d.Blob = dummy.Blob; _context.Attach(d); _context.SaveChanges(); }
public void Save_BigInteger() { // arrange var family = _db.GetColumnFamily <IntegerType>(FamilyName); BigInteger expected = 100; // act family.InsertColumn(TestKey, expected, Math.PI); _db.SaveChanges(); var actual = family.GetColumn(TestKey, expected); // assert Assert.AreEqual(expected, (BigInteger)actual.ColumnName); }
public void Save_Byte() { // arrange var family = _db.GetColumnFamily <LongType>(FamilyName); byte expected = 100; // act family.InsertColumn(TestKey, expected, Math.PI); _db.SaveChanges(); var actual = family.GetColumn(TestKey, expected); // assert Assert.AreEqual(expected, (byte)actual.ColumnName); }
public void Save_Guid() { // arrange var family = _db.GetColumnFamily <LexicalUUIDType>(FamilyName); Guid expected = new Guid("38400000-8cf0-11bd-b23e-10b96e4ef00d"); // act family.InsertColumn(TestKey, expected, Math.PI); _db.SaveChanges(); var actual = family.GetColumn(TestKey, expected); // assert Assert.Equal(expected, (Guid)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 InsertData(string key) { var productFamily = _db.GetSuperColumnFamily("supercolumns"); var post = productFamily.CreateRecord(key); _db.Attach(post); for (int i = 0; i < 4; i++) { dynamic d = post.CreateSuperColumn(GuidGenerator.GenerateTimeBasedGuid(DateTimeOffset.Now.Subtract(TimeSpan.FromSeconds(i)))); d.columnone = Guid.NewGuid().ToString(); d.columntwo = Guid.NewGuid().ToString(); } _db.SaveChanges(); }
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 CreateComments() { using (var db = new CassandraContext(keyspace: KeyspaceName, server: Server)) { var key = "first-blog-post"; // get the comments family var commentsFamily = db.GetSuperColumnFamily("Comments"); ConsoleHeader("create comments"); var postComments = commentsFamily.CreateRecord(key: key); // lets attach it to the database before we add the comments db.Attach(postComments); var dt = new DateTime(2010, 11, 29, 5, 03, 00, DateTimeKind.Local); // add 5 comments for (int i = 0; i < 5; i++) { var comment = postComments.CreateSuperColumn(); comment["Name"] = "Nick Berardi"; comment["Email"] = "*****@*****.**"; // you can also use it as a dynamic object dynamic dcomment = comment; dcomment.Website = "www.coderjournal.com"; dcomment.Comment = "Wow fluent cassandra is really great and easy to use."; var commentPostedOn = dt; postComments[commentPostedOn] = comment; Console.WriteLine("Comment " + (i + 1) + " Posted On " + commentPostedOn.ToLongTimeString()); dt = dt.AddMinutes(2); } // save the comments db.SaveChanges(); } }
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 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(); }
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(); }