Esempio n. 1
0
        private static CompactStatistics DoStats(GuidStore db)
        {
            var stats = db.GetCompactStatistics();
            Console.Out.WriteLine("{0}: {1} [{2}, {3}]", "current", stats.TotalSize, stats.IndexSize, stats.BlobSize);
            Console.Out.WriteLine("{0}: {1} [{2}, {3}]", "compact", stats.EstimatedTotalPostCompactSize, stats.EstimatedPostCompactIndexSize, stats.PostCompactBlobSize);
            Console.Out.WriteLine("{0}: {1} [{2}, {3}]", "records", stats.RecordCount,
                stats.RecordCount > 0 ?
                stats.IndexSize / stats.RecordCount : 0,
                stats.RecordCount > 0 ? stats.EstimatedPostCompactIndexSize/ stats.RecordCount : 0);

            return stats;
        }
Esempio n. 2
0
        public void TestSimpleDB()
        {
            string indexDirectory = @"C:\test-simple-db\1\";
            var keys = new List<Guid>();
            int iterations = 10000;
            Console.Out.WriteLine("building");
            var watch = new Stopwatch();
            watch.Start();
            using(var db = new GuidStore(indexDirectory))
            {
                for (int i = 0; i < iterations;  i++)
                {
                    var value = "A random piece of data.";
                    var key = Guid.NewGuid();
                    keys.Add(key);
                    db.Save(key, Encoding.UTF8.GetBytes(value));
                }
                //var stats = DoStats(db);
                //Assert.AreEqual(100, stats.RecordCount);
            }

            watch.Stop();
            Console.Out.WriteLine(watch.ElapsedMilliseconds + "ms, " + iterations +" row");
            Console.Out.WriteLine("reading");
            watch.Reset();
            watch.Start();
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    var value = Encoding.UTF8.GetString(db.Get(key));
                    //Console.Out.WriteLine(key + ", "  + value);
                }
                //DoStats(db);
            }
            watch.Stop();
            Console.Out.WriteLine(watch.ElapsedMilliseconds + "ms, " + iterations + " row");

            Console.Out.WriteLine("updating to short value");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    db.Save(key, Encoding.UTF8.GetBytes("A value."));
                }
                DoStats(db);
            }
            Console.Out.WriteLine("reading");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    var value = Encoding.UTF8.GetString(db.Get(key));
                    //Console.Out.WriteLine(key + ", " + value);
                }
                DoStats(db);
            }

            Console.Out.WriteLine("updating to long value");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    db.Save(key, Encoding.UTF8.GetBytes("A much longer value than ever before will be updated."));
                }
                DoStats(db);
            }
            Console.Out.WriteLine("reading");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    var value = Encoding.UTF8.GetString(db.Get(key));
                    //Console.Out.WriteLine(key + ", " + value);
                }
                DoStats(db);
            }

            Console.Out.WriteLine("deleting...");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    db.Delete(key);
                }
                DoStats(db);
            }

            Console.Out.WriteLine("testing delete");
            using (var db = new GuidStore(indexDirectory))
            {
                foreach (var key in keys)
                {
                    try
                    {
                        db.Get(key);
                        Console.Out.WriteLine("hmmm... not good.");
                    }
                    catch(Exception ex)
                    {
                        //Console.Out.WriteLine("deleted.");
                    }
                }
                DoStats(db);
                Console.Out.WriteLine("adding one more");
                db.Save(Guid.NewGuid(), Encoding.UTF8.GetBytes("test"));
                DoStats(db);

                Console.Out.WriteLine("compact");
                db.Compact();
                DoStats(db);
            }
        }