Esempio n. 1
0
        public void Insert(string family, string key, string superColumnName, string columnName, string value)
        {
            ICluster cluster = AquilesHelper.RetrieveCluster(Cluster);

            byte[] keyAsByteArray   = Encoding.ASCII.GetBytes(key);
            byte[] valueAsByteArray = Encoding.ASCII.GetBytes(value);
            var    columnParent     = new ColumnParent
            {
                Column_family = family,
            };
            var column = new Column
            {
                Name      = ByteEncoderHelper.UTF8Encoder.ToByteArray(columnName),
                Timestamp = UnixHelper.UnixTimestamp,
                Value     = valueAsByteArray
            };


            cluster.Execute(new ExecutionBlock(client =>
            {
                // http://www.dotnetperls.com/convert-string-byte-array

                client.insert(keyAsByteArray, columnParent, column,
                              ConsistencyLevel.ONE);
                return(null);
            }), keyspaceName);
        }
Esempio n. 2
0
        protected override void InternalRun(ICluster cluster)
        {
            const string insertBatch = "INSERT INTO Foo.Bar (id, Baz) VALUES (?, ?)";
            var preparedInsert = cluster.Prepare(insertBatch);

            const int times = 10;

            var random = new Random();

            for (int i = 0; i < times; i++)
            {
                long running = Interlocked.Increment(ref _running);

                Console.WriteLine("Current {0} Running {1}", i, running);

                var data = new byte[30000];
                // var data = (float)random.NextDouble();
                preparedInsert.ExecuteNonQuery(new {id = i, Baz = data}, ConsistencyLevel.ONE)
                              .ContinueWith(_ => Interlocked.Decrement(ref _running));
            }

            while (Thread.VolatileRead(ref _running) > 0)
            {
                Console.WriteLine("Running {0}", _running);
                Thread.Sleep(1000);
            }

            var result = cluster.Execute<Foo>("select * from Foo.Bar where id = 50").Result;
            foreach (var res in result)
            {
                Console.WriteLine("{0} len={1}", res.Id, res.Baz.Length);
            }
        }
Esempio n. 3
0
        protected override void InternalRun(ICluster cluster)
        {
            const string cqlKeyspaces = "SELECT * from system.schema_columns";

            var req = from t in cluster.Execute<SchemaColumns>(cqlKeyspaces).Result
                      where t.KeyspaceName == "system"
                      select t;
            DisplayResult(req);
        }
 public IEnumerable<IPAddress> DiscoverPeers(ICluster cluster)
 {
     var futPeers = cluster.Execute<Peer>("select rpc_address from system.peers", ConsistencyLevel.ONE).AsFuture();
     List<IPAddress> newPeers = new List<IPAddress>();
     foreach (Peer peer in futPeers.Result)
     {
         IPAddress newPeer = peer.RpcAddress;
         newPeers.Add(newPeer);
         _logger.Debug("Discovered peer {0}", newPeer);
     }
     return newPeers;
 }
        protected virtual async Task <IGetOperationResult> PerformGetCore(string key, ulong cas)
        {
            try
            {
                var op = opFactory.Get(keyTransformer.Transform(key), cas);
                await cluster.Execute(op).ConfigureAwait(false);

                return(op.Result);
            }
            catch (IOException e)
            {
                return(new GetOperationResult().FailWith(e));
            }
        }
Esempio n. 6
0
        protected override void InternalRun(ICluster cluster)
        {
            const string cqlKeyspaces = "SELECT * from system.schema_keyspaces";

            var allTasks = new List<Task>();
            for (int i = 0; i < 100; ++i)
            {
                var futRes = cluster.Execute<SchemaKeyspaces>(cqlKeyspaces).ContinueWith(t => DisplayKeyspace(t.Result));
                allTasks.Add(futRes);
            }

            Task.WaitAll(allTasks.ToArray());
        }
Esempio n. 7
0
        /// <summary>
        /// Adds or updates value in the storage
        /// </summary>
        /// <param name="key">Key which identifies the data</param>
        /// <param name="value">Data to store</param>
        /// <returns>True if operation was success</returns>
        public bool AddOrUpdate(Guid key, object value)
        {
            // Insert statement
            byte[] keyEncoded = key.ToByteArray();

            ColumnParent columnParent = new ColumnParent();

            columnParent.Column_family = columnFamily;

            using (var ms = new MemoryStream())
            {
                using (var bw = new BinaryWriter(ms))
                {
                    Serializer.Serialize(value, bw);

                    byte[] data = new byte[ms.Length];

                    // Copy only the used portion of the buffer
                    Array.Copy(ms.GetBuffer(), data, ms.Length);

                    Column column = new Column()
                    {
                        Name      = ByteEncoderHelper.UTF8Encoder.ToByteArray("Value"),
                        Timestamp = UnixHelper.UnixTimestamp,
                        Value     = data,
                    };

                    cluster.Execute(new ExecutionBlock(delegate(Cassandra.Client client)
                    {
                        client.insert(keyEncoded, columnParent, column, ConsistencyLevel.ONE);
                        return(null);
                    }), keySpace);
                }
            }

            return(true);
        }
Esempio n. 8
0
        protected override void InternalRun(ICluster cluster)
        {
            const string cqlKeyspaces = "SELECT * from system.schema_keyspaces";

            var allResults = new List<Task<IList<SchemaKeyspaces>>>();
            for (int i = 0; i < 100; ++i)
            {
                var futRes = cluster.Execute<SchemaKeyspaces>(cqlKeyspaces).AsFuture();
                allResults.Add(futRes);
            }

            foreach (var result in allResults)
            {
                DisplayKeyspace(result);
            }
        }
Esempio n. 9
0
        public List <ColumnOrSuperColumn> GetSlice(string family, string key, string superColumnName, int count)
        {
            //var getSliceCommand = new GetSliceCommand
            //                          {
            //                              KeySpace = Name,
            //                              Key = key,
            //                              ColumnFamily = family,
            //                              SuperColumn = superColumnName,
            //                              Predicate =
            //                                  new SlicePredicate
            //                                      {
            //                                          Slice_range = new SliceRange {Count = count}
            //                                      }
            //
            //using (var connection = AquilesHelper.RetrieveConnection(Cluster))
            //{
            //    connection.Execute(getSliceCommand);
            //    return getSliceCommand.Output == null
            //               ? new List<AquilesColumn>()
            //               : getSliceCommand.Output.Results.Select(o => o.Column).ToList();
            //}

            byte[] keyAsByteArray = Encoding.ASCII.GetBytes(key);
            var    columnParent   = new ColumnParent
            {
                Column_family = family,
            };
            var predicate = new SlicePredicate
            {
                Slice_range = new SliceRange
                {
                    Count    = 1000,
                    Reversed = false,
                    Start    = new byte[0],
                    Finish   = new byte[0],
                },
            };

            ICluster cluster  = AquilesHelper.RetrieveCluster(Cluster);
            object   rtnValue = cluster.Execute(new ExecutionBlock(
                                                    client =>
                                                    client.get_slice(keyAsByteArray, columnParent, predicate,
                                                                     ConsistencyLevel.ONE)), keyspaceName);

            return(rtnValue as List <ColumnOrSuperColumn>);
        }
Esempio n. 10
0
        protected override void InternalRun(ICluster cluster)
        {
            const string cqlKeyspaces = "SELECT * from system.schema_keyspaces";

            Random rnd = new Random();
            for (int i = 0; i < 10; ++i)
            {
                DateTime dtStart = DateTime.Now;
                DateTime dtStop = dtStart.AddSeconds(2); // 2 second max
                int wait = rnd.Next(4*1000);
                var futRes = cluster.Execute<SchemaKeyspaces>(cqlKeyspaces)
                                    .ContinueWith(t =>
                                        {
                                            // simulate an eventually long operation
                                            Thread.Sleep(wait);
                                            return t;
                                        }).Unwrap().ContinueWith(t => DisplayKeyspace(t.Result, dtStop));
                futRes.Wait();
            }
        }
Esempio n. 11
0
        public ColumnOrSuperColumn GetColumn(string family, string key, string superColumnName, string columnName)
        {
            //var getCommand = new GetCommand
            //                     {
            //                         KeySpace = Name,
            //                         Key = key,
            //                         ColumnFamily = family,
            //                         ColumnName = columnName,
            //                         SuperColumnName = superColumnName
            //                     };
            //using (var connection = AquilesHelper.RetrieveConnection(Cluster))
            //{
            //    connection.Execute(getCommand);
            //    return getCommand.Output == null ? null : getCommand.Output.Column;
            //}


            byte[] keyAsByteArray        = Encoding.ASCII.GetBytes(key);
            byte[] columnNameAsByteArray = Encoding.ASCII.GetBytes(columnName);
            var    columnPath            = new ColumnPath
            {
                Column        = columnNameAsByteArray,
                Column_family = family,
            };

            ICluster cluster = AquilesHelper.RetrieveCluster(Cluster);

            return((ColumnOrSuperColumn)cluster.Execute(new ExecutionBlock(client =>
            {
                try
                {
                    return client.get(keyAsByteArray, columnPath,
                                      ConsistencyLevel.ONE);
                }
                catch (Exception e)
                {
                    return null;
                }
            }), keyspaceName));
        }
Esempio n. 12
0
        protected override void InternalRun(ICluster cluster)
        {
            const string insertNerdMovie = "INSERT INTO videos.NerdMovies (movie, director, main_actor, year)" +
                                           "VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005) " +
                                           "USING TTL 86400";
            Console.WriteLine(insertNerdMovie);
            cluster.ExecuteNonQuery(insertNerdMovie).Wait();
            Console.WriteLine();

            const string selectNerdMovies = "select * from videos.NerdMovies";
            Console.WriteLine(selectNerdMovies);
            var taskSelectStartMovies = cluster.Execute<NerdMovie>(selectNerdMovies).ContinueWith(res => DisplayMovies(res.Result));
            taskSelectStartMovies.Wait();
            Console.WriteLine();

            const string selectAllFrom = "select * from videos.NerdMovies where director=? ALLOW FILTERING";
            Console.WriteLine(selectAllFrom);
            var preparedAllFrom = cluster.Prepare(selectAllFrom);
            var ds = new {Director = "Joss Whedon"};
            var taskSelectWhere =
                    preparedAllFrom.Execute<NerdMovie>(ds).ContinueWith(res => DisplayMovies(res.Result));
            taskSelectWhere.Wait();
            Console.WriteLine();
        }