数据库存储
SmartEDB支持逻辑数据库设备的概念。逻辑数据库设备是物理存储位置的抽象,可以是常规内存(应用程序地址空间中的静态或堆分配内存)、共享内存(多个进程共享的“命名”内存),或者持久文件系统内存,如简单文件、多文件或 RAID 文件,甚至是原始磁盘分区。使用任何 SmartEDB编程语言 API 以及通过 xSQL 从应用程序对 SmartEDB数据库的所有访问都是通过这些逻辑内存设备进行管理的。(有关嵌入式系统中 SmartEDB内存管理策略的更多信息,请参阅内存管理网页。)
应用程序确定内存设备的大小和位置、内存类型以及 SmartEDB运行时将如何使用该设备。这被称为设备分配,包括:
- 一个用于元数据和用户数据、索引和其他数据库结构的内存区域
- 一个用于磁盘管理器缓存(页面池)的内存区域
- 一个持久存储设备(可以是文件、多文件或 RAID)
- 一个包含数据库日志文件的设备
数据库是在一个或多个设备“之上”创建的。这意味着数据库的逻辑结构(数据库布局)由 SmartEDB运行时创建,并且独立于物理布局(存储设备)。内存数据库将为所有数据库数据、索引和元数据使用单个常规或共享内存设备。具有持久类(其数据存储在持久存储介质上)的数据库需要由四个或更多数据库设备组成的数组。无论其性质如何,任何数据库都必须至少有一个内存设备。并且可以通过向布局中添加存储设备来“扩展”数据库。一旦设备已添加到布局中(即内存/存储已扩展),该内存就不能再被应用程序用于其他用途 - 它完全由 SmartEDB运行时管理。
每个设备定义都反映了底层存储的物理属性:
- 常规内存设备
- 共享(命名)内存区域
- 文件设备
- 多文件设备
- RAID - 0(条带化)
- RAID - 1(镜像)
- 其他类型(管道、高可用性异步缓冲区……)
以下图表说明了如何配置内存和持久设备来管理混合数据库:
Image