aboutsummaryrefslogblamecommitdiffstats
path: root/docs/mainpage.dox
blob: 3c6daa306bd4ce0cf9bfc30798a10a0087609c09 (plain) (tree)
1
2
3
4
5
6





                                                                   





































                                                                             
                                                                          








                                                                             
  

                             

                                                                          

             

                                    

           
                                                   


                                         



                   
                                                       





                                                                     
/**
 * @mainpage Relational NT
 *
 * @image html logo.png
 *
 * Relational NT is an experimental database kernel inspired by the
 * object-management model of the Windows NT kernel. The project applies
 * explicit object management to database state: relations, tuples,
 * transactions, namespaces, permissions, cursors, and handles are
 * runtime-managed objects rather than isolated subsystems.
 *
 * @section motivation Motivation
 *
 * The NT kernel is a good model for a dedicated database kernel for three
 * reasons.
 *
 * **The object manager.** NT's OB gives every kernel resource a named path,
 * a security descriptor, and a uniform open/close lifecycle enforced through
 * handles. A database kernel has the same requirements. Rather than building
 * those mechanisms independently for each database concept, this project
 * borrows the NT object manager's shape directly.
 *
 * **Physical backends as drivers.** NT device drivers expose a narrow
 * dispatch table. The kernel routes I/O through it without knowing whether
 * the device is a local disk or a network adapter. Storage backends here
 * follow the same pattern. A remote backend like etcd is just another
 * driver, but brings its own concerns: network latency, connection
 * management, and the possibility of partial failure. The driver boundary
 * keeps those concerns inside the backend module.
 *
 * **Clients as environment subsystems.** NT supports Win32, POSIX, and OS/2
 * as environment subsystems layered above a common native API. A database
 * client works the same way: a PostgreSQL wire adapter, a MySQL wire
 * adapter, or an HTTP/JSON interface each translates its protocol into
 * kernel-level operations. The kernel never sees SQL syntax or protocol
 * framing.
 *
 * @section architecture Architecture
 *
 * - ObjectManager registers, locates, and references database objects by
 *   logical path.
 * - PermissionsManager keeps capability checks separate from object lookup.
 * - IdentityManager decides whether an object supports a requested lifecycle
 *   operation.
 * - LifecycleManager models monitoring, pinning, cleanup, and contention.
 * - HandlerManager orchestrates the full open/close workflow and owns handle
 *   allocation.
 * - CursorManager provides a pull-based iterator over storage, abstracting
 *   pagination, snapshot pinning, and scan boundaries.
 * - VM separates terminating first-order relational retrieval (Tarski) from
 *   higher-order logic execution (Karuta).
 * - NamespaceReferenceManager handles logical path mapping and namespace
 *   isolation, including private branch shadowing and atomic multi-reference
 *   updates.
 *
 * @section building Building
 *
 * Requires MSVC, CMake 3.10 or later, and vcpkg. Dependencies are fetched
 * automatically during configure.
 *
 * @code{.sh}
 * cmake --preset x64-debug
 * cmake --build out/build/x64-debug
 * @endcode
 *
 * A release build uses @c --preset @c x64-release.
 *
 * @section docs Generating Documentation
 *
 * @code{.sh}
 * doxygen Doxyfile
 * @endcode
 *
 * Generated HTML is written to @c docs/generated/html.
 */

/**
 * @namespace nt
 * @brief Contains the Relational NT runtime managers and API facade.
 */