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; }
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); } }