Exemple #1
0
 // Initialize the Registry DB (SOP ObjectServer & Data file).
 protected static void Initialize(Sop.Profile fileConfig = null, bool persisted = true)
 {
     // commit every 10 minutes.
     if (CommitInterval == null)
     {
         CommitInterval = new TimeSpan(0, 10, 0);
         //#if (DEBUG)
         //                CommitInterval = new TimeSpan(0, 1, 0);
         //#else
         //                CommitInterval = new TimeSpan(0, 10, 0);
         //#endif
     }
     if (_server != null)
     {
         return;
     }
     lock (_serverLocker)
     {
         // create the SOP Server file for use as registry...
         if (_server != null)
         {
             return;
         }
         if (fileConfig == null)
         {
             fileConfig = new Profile();
         }
         fileConfig.MemoryExtenderMode = !persisted;
         _server = new Sop.ObjectServer(ServerFilename, false, fileConfig);
         if (string.IsNullOrWhiteSpace(ServerFilename))
         {
             ServerFilename = _server.Filename;
         }
         //#if (DEBUG)
         //                Log.Logger.Instance = new Log.Logger(string.Format("{0}\\SopLog.txt", _server.Path));
         //                Log.Logger.Instance.LogLevel = Log.LogLevels.Verbose;
         //#endif
     }
 }
Exemple #2
0
        //** insert 5 million records on two containers
        void Populate(Sop.ObjectServer server)
        {
            int ZipCodeCtr = 5000;

            Person[] NewPeople      = new Person[1000];
            int      NewPeopleIndex = 0;

            for (int i = 0; i < MaxCount; i++)
            {
                int    pid = (int)PeopleStore.GetNextSequence();
                Person p   = new Person()
                {
                    PersonID = pid,
                    Key      = new PersonKey()
                    {
                        FirstName = string.Format("Joe{0}", pid),
                        LastName  = string.Format("Peter{0}", pid)
                    },
                    PhoneNumber = "510-555-9999"
                };
                PeopleStore.Add(p.PersonID, p);
                NewPeople[NewPeopleIndex++] = p;
                //** do inserts on People Store By Name every batch of 1000 records
                //** to minimize disk I/O head jumps, causing more optimal insertion times...
                if (NewPeopleIndex == 1000)
                {
                    foreach (Person np in NewPeople)
                    {
                        PeopleStoreByName.Add(np.Key, np.PersonID);
                    }
                    NewPeopleIndex = 0;
                }
                //** NOTE: SOP supports very large transactions.
                //** In this case we've set it to commit every x00,000 insertions on two tables.
                //** Each one of these operations is a high speed operation and requires fairly reasonable resource footprint
                if (i > 0 && i % TransactionSize == 0)
                {
                    if (NewPeopleIndex > 0)
                    {
                        for (int i2 = 0; i2 < NewPeopleIndex; i2++)
                        {
                            Person np = NewPeople[i2];
                            PeopleStoreByName.Add(np.Key, np.PersonID);
                        }
                        NewPeopleIndex = 0;
                    }
                    ZipCodeCtr++;
                    server.CycleTransaction();
                }
            }
            if (NewPeopleIndex > 0)
            {
                for (int i2 = 0; i2 < NewPeopleIndex; i2++)
                {
                    Person np = NewPeople[i2];
                    PeopleStoreByName.Add(np.Key, np.PersonID);
                }
            }
            ZipCodeCtr++;
            server.CycleTransaction();
        }