AerospikeTraining.Program.GenerateData C# (CSharp) Method

GenerateData() public method

public GenerateData ( ) : void
return void
        public void GenerateData()
        {
            Random rnd1 = new Random();
            Random rnd2 = new Random();
            Random rnd3 = new Random();

            int UserRecords = 0;
            for (int x = 1; x <= MAX_RECORDS; x++){
                int DayRecords = 0;
                int EventRecords = 0;
                String UserKeyString = "User-" + x;
                Key UserKey = new Key ("test", "user-events", UserKeyString);
                client.Put(null, UserKey, new Bin("user-id", UserKeyString));

                int NoOfEvents = 0; // number of events per day
                int DayPercent = 0;
                if (x % 893 == 0) { // ocasionally write a large number of events per day
                    NoOfEvents = rnd2.Next(500, BIG_EVENTS);
                    DayPercent = rnd1.Next(80, 100);
                } else {
                    NoOfEvents = rnd3.Next(1, SMALL_EVENTS);
                    DayPercent = rnd1.Next(1, 100);
                }

                int inc = Math.Max(MAX_DAYS / (100 - DayPercent), 1); // calculate how many days to write events

                for (int y = 1; y <= MAX_DAYS; y += inc) {
                    DateTime EventDay = epoch.Subtract(TimeSpan.FromDays(y));
                    String DateString = EventDay.ToString ("yyyy-MM-dd");
                    String EventKeyString = UserKeyString + ":" + DateString + ":" + 1;
                    Key EventKey = new Key ("test", "user-events", EventKeyString);
                    Bin User = new Bin ("user-id", UserKeyString);
                    Bin Day = new Bin("day", DateString);
                    Bin Sequence = new Bin("sequence", 1);
                    List<string> EventList = new List<string> ();
                    for (int z = 1; z <= NoOfEvents; z++) {
                        EventList.Add (z + ":" + EVENT_STRING);
                    }
                    Bin recordCount = new Bin ("total-records", NoOfEvents);
                    Bin Events = new Bin("events", EventList);
                    client.Put (null, EventKey, User, Day, Sequence, recordCount, Events);
                    DayRecords++;
                    EventRecords += NoOfEvents;

                }
                UserRecords++;
                if (x % 10 == 0) {
                    Console.WriteLine ("User records: " + UserRecords +" Day records: " + DayRecords  +" Event records: " + EventRecords);
                }
            }
        }

Usage Example

Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("User event data grouped by day\n");
            Program p = null;
            try
            {
                ClientPolicy policy = new ClientPolicy();

            //				policy.user = "******";
            //				policy.password = "******";
            //				policy.failIfNotConnected = true;
            //				p = new Program(new AerospikeClient(policy, "C-9a8d04af83.aerospike.io", 3200));
                p = new Program(new AerospikeClient(policy, "127.0.0.1", 3000));

                int feature;
                do {

                    // Present options
                    Console.WriteLine("What would you like to do:");
                    Console.WriteLine("1> Generate data");
                    Console.WriteLine("2> Simulate daily events");
                    Console.WriteLine("3> Get a day range of events for a user");
                    Console.WriteLine("0> Exit");
                    Console.Write("\nSelect 1-3 and hit enter:");
                    feature = int.Parse(Console.ReadLine());

                    if (feature != 0)
                    {
                        switch (feature)
                        {
                            case 1:
                                Console.WriteLine("********** Generate Data");
                                p.GenerateData();
                                break;
                            case 2:
                                Console.WriteLine("********** Simulate daily events");
                                p.SimulateDailyEvents();
                                break;
                            case 3:
                                Console.WriteLine("********** Get a day range of events for a user");
                                p.DayRangeForUser();
                                break;
                            case 0:
                                Console.WriteLine("Goodbye");
                                break;
                            default:
                                Console.WriteLine("********** Invalid Selection ");
                                break;
                        }
                    }
                } while (feature != 0);
            }
            catch (AerospikeException e)
            {
                Console.WriteLine("AerospikeException - Message: " + e.Message);
                Console.WriteLine("AerospikeException - StackTrace: " + e.StackTrace);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception - Message: " + e.Message);
                Console.WriteLine("Exception - StackTrace: " + e.StackTrace);
            }
            finally
            {
                if (p.client != null && p.client.Connected)
                {
                    // Close Aerospike server connection
                    p.client.Close();
                }
            }
        }