Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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')");
            }
        }
        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();
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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();
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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 Save(Dummy dummy)
        {
            dynamic d = _dummies.CreateRecord(dummy.Id);

            d.Blob = dummy.Blob;
            _context.Attach(d);
            _context.SaveChanges();
        }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
        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();
            }
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        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();
        }
Esempio n. 16
0
        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();
            }
        }
Esempio n. 17
0
        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();
            }
        }