コード例 #1
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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));
                }
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sdether/fluentcassandra
        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();
            }
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: Cql3Test.cs プロジェクト: kfmaurice/fluentcassandra
        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());
        }
コード例 #7
0
        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);
        }
コード例 #8
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);
            }
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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();
            }
        }
コード例 #10
0
        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();
        }
コード例 #11
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);
            }
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: sdether/fluentcassandra
        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();
            }
        }
コード例 #13
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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();
            }
        }
コード例 #14
0
		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();
		}
コード例 #15
0
        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);
        }
コード例 #16
0
        public void TestInit()
        {
            var keyspaceName = "Testing";
            var server       = new Server("localhost");

            _db     = new CassandraContext(keyspace: keyspaceName, server: server);
            _family = _db.GetColumnFamily <AsciiType>("Users");
        }
コード例 #17
0
        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");
        }
コード例 #18
0
        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");
        }
コード例 #19
0
        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");
        }
コード例 #20
0
        public LinqToCqlObjectsTests()
        {
            var keyspaceName = "Testing";
            var server = new Server("localhost");

            _db = new CassandraContext(keyspace: keyspaceName, server: server);
            _family = _db.GetColumnFamily<AsciiType>("Users");
        }
コード例 #21
0
		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");
		}
コード例 #22
0
        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();
        }
コード例 #23
0
        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);
        }
コード例 #24
0
        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("");
            });
        }
コード例 #25
0
		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("");
			});
		}
コード例 #26
0
        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);
        }
コード例 #27
0
ファイル: Program.cs プロジェクト: sdether/fluentcassandra
        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));
                }
            }
        }
コード例 #28
0
        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));
            }
        }
コード例 #29
0
        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);
        }
コード例 #30
0
		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);
		}
コード例 #31
0
        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");
        }
コード例 #32
0
        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");
        }
コード例 #33
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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;
                    }
                }
            }
        }
コード例 #34
0
ファイル: Program.cs プロジェクト: sdether/fluentcassandra
        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));
                }
            }
        }
コード例 #35
0
        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));
            }
        }
コード例 #36
0
		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);
			}
		}
コード例 #37
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();
        }
コード例 #38
0
ファイル: Program.cs プロジェクト: nativex/fluentcassandra
        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();
            }
        }
コード例 #39
0
ファイル: Program.cs プロジェクト: nativex/fluentcassandra
        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));
            }
        }
コード例 #40
0
ファイル: Program.cs プロジェクト: karlgrz/fluentcassandra
        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();
        }
コード例 #41
0
        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);
        }
コード例 #42
0
        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);
                }
        }
コード例 #43
0
        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);
        }
コード例 #44
0
        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);
            }
        }
コード例 #45
0
ファイル: Program.cs プロジェクト: nativex/fluentcassandra
        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));
            }
        }
コード例 #46
0
        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();
            }
        }
コード例 #47
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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));
            }
        }
コード例 #48
0
ファイル: Program.cs プロジェクト: DerekLiang/fluentcassandra
        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;
                    }
                }
            }
        }