静态库
基本库
Java库
安装根目录下的\target\bin
目录包含Java归档文件smartedb.jar
和smartedb_jdbc.jar
。
Python库
\target\bin\python
目录包含SmartEDB Python实现的源文件exdb.py
和以下Windows动态链接库文件。对于本地C库,提供了调试模式和发布模式。下面只列出了发布模式文件。
- smartedb_im_mursiw.pyd - 常规内存的MURSIW事务管理器。
- smartedb_im_mursiw_shm.pyd - 共享内存的MURSIW事务管理器。
- smartedb_im_mvcc.pyd - 常规内存的MVCC事务管理器。
- smartedb_im_mvcc_shm.pyd - 共享内存的MVCC事务管理器。
本地C库
本地C库(C++、Java和Python包装器所依赖的库)将在下面的部分中进行描述。每个库以两种形式提供:
- 调试 - 在开发期间使用,以帮助发现应用程序级别的错误;包含多个级别的检查,以检查可能的错误参数值和其他在应用程序部署之前应该捕获和解决的错误条件;可通过文件名中的
_debug
后缀来识别。 - 发布 - 当开发周期完成或需要进行性能比较时使用;因为大多数内置于调试版本中的检查都被删除了,所以这个版本的库的执行速度要快得多。
Java和Python应用程序在运行时加载共享对象所需的库,但通常C和c++应用程序将静态链接适当的库。
Windows SmartEDB运行时可以通过两种方式链接到应用程序。
- 静态 - 作为一组静态库(扩展名为**.lib**)。
- 动态 - 使用一组动态库(扩展名为**.dll**)。
C和C++应用程序通常会静态链接合适的**.lib库,而Python、Java和.net框架应用程序会在运行时加载必要库的.dll**。使用动态链接的运行时提供了以下优点:
- 能够在应用程序启动时选择确切的运行时特性;
- 从SQL引擎创建和调用用户定义函数的能力。
系统访问层库
下表列出了实现SmartEDB功能的基本库。与平台相关的功能是在为系统访问层(SAL)的库集中实现的。下面每个类别中的库必须至少有一个与支持的SAL库一起链接到C和C++应用程序。
- mcosalatomic.lib - 原子操作。
- mcosallatches.lib - 锁存实现。
- mcosaltimer.lib - 低分辨率和高分辨率定时器实现。
- mconet.lib - 系统网络层。
- mcosalmem.lib - 系统内存管理。
- mcosalsmp.lib - 系统互斥锁,信号量,线程和其他多线程/进程相关的代码。
- mcosaldload.lib - 系统动态加载器。
- mcosalhollow.lib - 存根函数(仅用于内存中数据库单线程应用程序 )。
核心运行时
在下列库中,mcolib.lib
是用于基本功能。mcovtmem.lib
或mcovtdsk.lib
则是根据是否使用持久数据库。
- mcolib.lib - 主数据库功能。
- mcovtmem.lib - 用于内存数据库虚拟表管理。
- mcovtdsk.lib - 用于持久和混合数据库的虚拟表管理。
内存设备管理器
根据所使用的数据库内存设备类型,需要以下库之一。
- mcomconv.lib - 传统存储设备。
- mcomalloc.lib - 一个由运行时分配内部内存的常规内存设备。
- mcomw32.lib - 共享内存设备。
事务管理器
根据事务管理器的选择,需要以下库之一。
- mcotmursiw.lib - MURSIW (MUlti-Read-Single-Write) 多读单写事务管理器。
- mcotmvcc.lib - MVCC (Multi Version Concurrency Control) 多版本并发控制事务管理器。
- mcotexcl.lib - EXCLusive 独占事务管理器。
并发管理
管理来自多个线程或进程的数据库访问的同步时,需要下列库之一。
- mcosw32.lib - 使用“原子操作”进行本机Windows同步,以避免不必要的内核调用。
- mcosw32n.lib - 不使用“原子操作”本机Windows同步。
提示
在单线程内存数据库应用程序中,库mcosalhllow.lib
中没有同步代码,因此是实现速度最快,但仅适用于单线程应用程序。
如果应用程序与mcosalhllow.lib
链接。则不需要其他同步库。
持久化支持
所有使用持久存储API的C和C++应用程序都必须链接mcovtdsk.lib
,而不是mcovtmem.lib
来进行“虚拟表”控制,此外,根据所使用的文件系统,需要以下库之一:
- mcofw32.lib - 支持Windows file sy文件系统。
实用函数
SmartEDB内部使用的其他功能在以下库中提供。根据是否使用标准C运行时库,需要以下其中一个:
- mcouwrt.lib - C运行时。
- mcounrt.lib - 不使用C运行时。
可选特性库
以下为特定特性所需的可选库。
动态模块加载器
下面的库提供了根据请求动态加载核心部分的能力。
- mcoloader.lib - 提供
mco_core_load()
API来根据请求动态加载核心的部分。
序列数据类型支持
这些库提供基本的序列数据类型操作,如读取和插入序列数据。所有使用sequence数据类型的应用程序必须链接到以下库之一。
- mcoseq.lib - 序列数据类型API支持。
- mcoseqrle.lib - RLE压缩序列数据类型API支持。
分析函数库
如果除了基本的序列操作外,还需要对序列进行操作的数学和统计函数,则应用程序必须链接以下库之一。
- mcoseqmath.lib - 对数列进行运算的数学和统计函数。
- mcoseqrlemath.lib - 用RLE压缩对序列进行运算的数学和统计函数。
主动复制结构支持
主动复制结构包提供以下库。所有使用ARF (IoT) API的应用程序必须与以下两者链接。
- mcoiotcomm.lib - 物联网通信库。
- mcoiotrepl.lib - 物联网复制库。
事务日志接口
- mcolog.lib - 事务日志API实现。所有使用事务日志API的应用程序必须链接。
注意
所有使用事务日志API的应用程序必须与文件系统包装器库链接(请参阅上面的持久数据库支持部分)。
备份
- mcobackup.lib - 使用增量备份特性在持久介质上备份和恢复数据库的应用程序。
序列化
- mcoseri.lib - 使用
save/load
(保存和加载)在持久介质上存储和检索数据库或类快照程序提供全内存数据库的序列化。
注
此功能不需要文件系统包装器。save/load
特性通过应用程序将数据传输到操作系统。
统一数据访问
- mcouda.lib - 对于使用统一数据访问功能(UDA接口)的应用程序需要配置。
调试错误和跟踪诊断
- mcotrace.lib - 跟踪框架允许应用程序将跟踪和调试信息输出到日志文件中。
数据库计算器
- mcodbcalc.lib - 使用数据库计算器需要配置。
HTTP数据库查看器
- mcoews.lib - HTTP服务器实现。
- mcohv.lib - HTTP数据库查看器(不具备SQL功能)。
数据库加密
- mcocryptaes.lib - AES加密算法。
- mcocryptstub.lib - 用于自定义实现的空加密API。
扩展库
除了基本库之外,安装根目录下的/target/bin
目录还包含依赖于扩展模块(如果可用)的其他内容。对于使用这些附加特性的C和C++应用程序,将需要如下一个或多个库。
重要
使用下列任何功能,都需要系统访问层库(System Access Layer, SAL)。
提示
与基本库一样,本机C库以调试模式和发布模式两种形式提供。下列扩展模块库只显示发布模式文件名。
SQL Support
用于嵌入式本地和远程SQL数据库支持的库。所有使用嵌入式SQL API的应用程序都需要以下库。
- mcosql.lib - SQL核心库。
- mcocomp.lib - 支持在xSQL中导入结构文件。
具有SQL功能的HTTP查看器
可用于在HTTP查看器中提供SQL功能。
- mcohv_sql.lib - 带有SQL接口的HTTP查看器。
提示
mcohv_sql.lib
取代了 mcohv.lib
,并且必须与mcocgi.lib
或 mcoews_cgi_cud.lib
一起使用。
远程SQL
- mcorsql.lib - 远程SQL应用程序。
仅远程SQL客户端
如果获得定制化SQL包,其中仅包含RSQL客户端源文件,那么以下目录中的附加内容将被添加到标准目标代码发行版中:
target/mcosql
target/mcorsql
target/sal
include
提示
- 不支持序列数据类型,只有一个占位符库mcorsqlstub.lib,必须与运行时链接。
- 可以构建RSQL客户端应用程序,而无需向核心运行时或任何其他运行时组件添加依赖项。
以下运行时库必须与应用程序链接。
- mcosql.lib - SQL核心库。
- mcorsql.lib - 远程SQL应用程序。
- mcorsqlstdln.lib - 远程SQL的标准输入实现。
- mconet.lib - 系统网络层。
- mcosmp.lib - 系统内存管理。
- libmcomem.lib - 系统互斥,信号量,线程和其他多线程/进程相关的代码。
高可用性支持
- mcoha.lib - 高可用性API。
传输层库可选择以下任一库或者自定义。
- mconwpip.lib - PIPE传输层。
- mconwtcp.lib - TCP/IP传输层。
- mconwudp.lib - UDP 传输层。
- mcoiter.lib - 用于发布所有数据库更改的详细信息以及副本端操作。
更多请参阅高可用性API开发文档
集群支持
mcocluster.lib - 集群核心实现(在高可用性包内提供)。
mcocltcp.lib - TCP/IP传输层。(可自定义)
性能监视器
性能监控API可以在自定义应用程序中实现(只包括mcoperf
库),或者同时使用两个库(mcoperf
与mcohvperf
)提供的HTTP实现。
- mcoperf.lib - 性能监视器实现。
- mcohvperf.lib - HTTP接口。
Web服务
使用Web服务的C和c++应用程序必须与以下库链接。
- mcorest.lib - 嵌入式Web服务REST API。
- mcoews.lib - HTTP服务器实现。
- mcosaltimer.lib - 低分辨率和高分辨率定时器实现。
- mcosalsmp.lib - 需要多线程支持。
公网访问Web服务的应用程序将链接以下库及其依赖项。