These days one of the most important requirements of databases is fast response time. In information technology several sectors require real-time data access, such as telecommunication, process control, stock exchange or national defense. In-memory databases have an advantage over conventional database systems as they use memory for storage instead of block access data storage devices, thus information retrieval can be orders of magnitude faster. While reading a block from a hard disk takes 5ms in average, the same operation takes approximately 100ns in memory. Memory based systems have only became accessible recently due to the availability of the increasing size and decreasing price of RAM modules.
With development of the database engine the goal was to create an object-relational database engine using memory as storage, that takes advantage of the strengths of the .NET framework. This object-relation database engine could later serve play a role in making other database systems faster by serving as a cache layer on top of them.
In the first part of the thesis I present how the memory based database storage system works and explain the design decisions behind its modules. I outline how the index and transaction handling components work and describe their implementation details. Performance for database systems is important, however, for in-memory database systems it is even more so critical. Because of this during the planning phase I prove my decisions with calculations and attempt to select the best solutions throughout the process.
In the second part of the thesis I extend the system with a high performance text searching component. The efficiency of search can be improved by building a Full-Text index that is implemented by using various data structures. A Full-Text index represents a data storage and search mechanism which allows fast and efficient search within large text documents and text fields of databases. This solution improves the complexity of the search process from linear to logarithmical.