So, just finally made time to port the last project out of my old Google code repo. So here are all the links for the new packages and repositories: BPlusTree (and supporting parts of Library) -> CSharpTest.Net.Collections Library\Commands -> CSharpTest.Net.Commands RpcLibrary -> CSharpTest.Net.RpcLibrary Library\Tools\* -> CSharpTest.Net.Tools The [...]


So to start with what does “LurchTable” stand for? Least Used Recently Concurrent Hash Table Of course I am dyslexic so I can get away with swapping U and R around. My dyslexia aside, It’s a fair representation of what the class does. It essentially is a ConcurrentDictionary that keeps and maintains a linked-list of [...]

BPlusTree performance at large volumes (200 meeLLLLion)

Ok I swear this is the last B+Tree chart, graph, or metric I’ll post… at least for a while. I wanted to hit new limits so I fired up 6 threads on my six-core and let them rip… After three hours I finally stopped the run to look at the results. Each of the six [...]

BPlusTree benchmarks and comparisons

Test Overview The benchmark results below are from a single thread on a process with the thread-affinity set except two. The BPlusTree(Threaded) and obviously MySql were not constrained. All data used during the test was generated before the test ran. The number displayed in the logarithmic horizontal axis is the average number of operations completed [...]


Before I go much farther talking about the BPlusTree I want to address one thing. Does the BPlusTree support ACID operations? (definitions below from wikipedia) Atomicity Atomicity requires that database modifications must follow an “all or nothing” rule. Each transaction is said to be atomic. If one part of the transaction fails, the entire transaction [...]


Cont’d from Building a database in C# – Part 2 Caching and persistence seem to go hand-in-hand for this adventure. With the cost of serialization and IO it’s just not possible to get anything to perform well without a little caching. The questions I had around caching is really more along the lines of “how” [...]

Building a database in C# - Part 2

Cont’d from Building a database in C# – Part 1 So with the B+ tree semantics out of the way it was time to start looking at what was missing. Obviously it was all in memory and not yet on disk, and once it is on disk I’ll certainly need to cache. Yet there was [...]


Ok, so for the last week or two I’ve been off on an adventure of sorts with persistent media data structures. At first I was like “Surely a good solution exists?” this isn’t a new problem. Unfortunately I was unable to locate any solutions that were open source (non-GPL) and written entirely in managed code. [...]


FileList is a simple file enumeration class that can be used to easily find sets of files. Provide it a list of directory and/or file names and simply let it figure it out. It will raise an event for custom filtering or has some simple attribute-level filtering built-in. FileList files = new FileList(@”C:\Temp\*”); files.Add(@”C:\boot.ini”); files.Add(@”C:\*.bat”); [...]