|
6 | 6 |
|
7 | 7 | # PawnDB |
8 | 8 |
|
9 | | -A lightweight, type-safe in-memory database optimized for OLTP workloads. |
| 9 | +An **ultra lightweight & fast**, **portable** & **type-safe** in-memory database optimized for OLTP workloads. |
| 10 | + |
| 11 | +[PawnDB Wiki](https://github.com/xiahualiu/PawnDB/wiki) |
| 12 | + |
| 13 | +[PawnDB Doxygen Docs](https://xiahualiu.github.io/PawnDB/) |
10 | 14 |
|
11 | 15 | ## Features |
12 | 16 |
|
13 | 17 | ### Memory Management |
14 | | -- Zero heap allocation design |
15 | | -- Static memory allocation |
16 | | -- Built-in buffer pool management |
17 | | -- RAII buffer object with reference counting |
18 | | -- Maximum tuple size: 65535 bytes (UDP packet size limit) |
| 18 | +- Built-in buffer pool management. |
| 19 | +- No dynamic memory allocation system call (`malloc` or `new`) used. |
19 | 20 |
|
20 | 21 | ### Transaction Management |
21 | | -- Strict 2-Phase Locking (2PL) |
22 | | -- Tuple-level shared/exclusive locks |
23 | | -- Support lock promotion |
24 | | -- ACID compliance |
25 | | -- Single record operations |
| 22 | +- Strict 2-Phase Locking (2PL). |
| 23 | +- Tuple-level shared/exclusive locks. |
| 24 | +- Support lock promotion. |
| 25 | +- ACID compliance. |
| 26 | +- Single record operations. |
26 | 27 | - Deadlock prevention. |
27 | 28 |
|
28 | 29 | ### Type Safety |
29 | | -- Compile-time type checking |
30 | | -- Zero dynamic dispatch |
31 | | -- No virtual functions |
32 | | -- Strong type system |
| 30 | +- Compile-time type checking. |
| 31 | +- CRTP design pattern, does not use `virtual` functions. |
| 32 | +- No complicated inheritance due to Mixin pattern used. |
| 33 | + |
| 34 | +### Portable & Extendable |
| 35 | +- Can be used with external data serializer such as [Protobuf](https://github.com/protocolbuffers/protobuf). |
| 36 | +- Fully portable based on C++17 standard library. |
| 37 | + - Multi-thread based on `std::thread`. |
| 38 | + - No 3rd party code & license involved. |
| 39 | + - *Also requires Posix Domain Socket support for client communication.* |
33 | 40 |
|
34 | 41 | ## Language |
35 | 42 |
|
36 | | -* PawnDB is written in [ISO C++17](https://isocpp.org/std/the-standard), without compiler extensions. |
| 43 | +* PawnDB is written in [ISO C++17](https://isocpp.org/std/the-standard), without any compiler extensions. |
37 | 44 | * PawnDB follows [Google coding style](https://google.github.io/styleguide/). |
38 | 45 |
|
39 | 46 | ## License |
|
0 commit comments