嵌入式SQL示例
C++ 嵌入式 SQL 示例使用 McoSqlEngine 及相关类封装了 C API 嵌入式 SQL 示例中展示的原生 C 函数。
默认情况下,所有示例可执行文件都构建在/target/bin
目录中。请使用以下链接查看示例的描述和具体说明。
初始化
\native\sql\api\sql-02-open\initialize // 示例代码
\target\bin\api_sql_02_open_initililize // 构建后运行
此示例演示了 C++ SQL 访问的基本应用程序初始化。
自定义动态内存分配
\native\sql\api\sql-02-open\allocator // 示例代码
\target\bin\api_sql_02_open_allocator // 构建后运行
演示了如何使用类 StdAllocator 注册自定义动态内存分配器,以替代标准 C 运行时函数 malloc()
和 free()
来执行 SQL 语句。
导入CSV
\native\sql\api\sql-02-open\imp_csv // 示例代码
\target\bin\api_sql_02_open_imp_csv // 构建后运行
此示例从外部 CSV 文件填充一个全内存数据库。
RAID初始化
\native\sql\api\sql-02-open\raid // 示例代码
\target\bin\api_sql_02_open_raid // 构建后运行
此示例打开并初始化位于 RAID 存储设备上的持久数据库。
McoSqlEngine关闭
\native\sql\api\sql-02-open\shutdown // 示例代码
\target\bin\api_sql_02_open_shutdown // 构建后运行
此示例演示了 McoSqlEngine 的正确关闭方式。
MURSIW 事务管理器执行
\native\sql\api\sql-03-transactions\mursiw // 示例代码
\target\bin\api_sql_03_transactions_mursiw // 构建后运行
此示例演示了使用 MURSIW 事务管理器执行的 SQL 操作。
MURSIW 在两个数据库实例中执行
\native\sql\api\sql-03-transactions\mursiw2 // 示例代码
\target\bin\api_sql_03_transactions_mursiw2 // 构建后运行
此示例演示了使用 MURSIW 事务管理器在两个数据库实例中执行 SQL 操作。
MURSIW 在两个数据库实例中执行
\native\sql\api\sql-03-transactions\mvcc // 示例代码
\target\bin\api_sql_03_transactions_mvcc // 构建后运行
此示例演示了使用 MVCC 事务管理器执行的 SQL 操作。
持久化数据库
\native\sql\api\sql-03-transactions\persistent // 示例代码
\target\bin\api_sql_03_transactions_persistent // 构建后运行
此示例演示了使用持久化数据库执行的 SQL 操作。
两阶段数据库事务
\native\sql\api\sql-03-transactions\ph2commit // 示例代码
\target\bin\api_sql_03_transactions_ph2commit // 构建后运行
此示例演示了两阶段数据库事务。
虚拟表结合使用
\native\sql\api\sql-03-transactions\vtable // 示例代码
\target\bin\api_sql_03_transactions_vtable // 构建后运行
此示例展示了虚拟表与 SmartEDB 数据库结合使用的用法。
BLOB
\native\sql\api\sql-04-varlength\blobs // 示例代码
\target\bin\api_sql_04_varlength_blobs // 构建后运行
此示例演示了 BLOB(二进制大对象)数据类型的使用。
Vectors
\native\sql\api\sql-04-varlength\vectors // 示例代码
\target\bin\api_sql_04_varlength_vectors // 构建后运行
此示例演示了向量数据类型的用法。
结构体类字段
\native\sql\api\sql-05-structures // 示例代码
\target\bin\api_sql_05_structures // 构建后运行
此示例演示了结构体类字段的用法。
Autoid引用实现
\native\sql\api\sql-06-references // 示例代码
\target\bin\api_sql_06_references // 构建后运行
此示例演示了使用自动 ID 引用实现连接的操作。
B 树索引搜索
\native\sql\api\sql-07-search\btree // 示例代码
\target\bin\api_sql_07_search_btree // 构建后运行
此示例演示了使用 B 树索引进行的搜索。
B 树索引游标
\native\sql\api\sql-07-search\cursor // 示例代码
\target\bin\api_sql_07_search_cursor // 构建后运行
此示例演示了使用 B 树索引的游标操作。
哈希索引搜索
\native\sql\api\sql-07-search\hash // 示例代码
\target\bin\api_sql_07_search_hash // 构建后运行
此示例演示了在唯一和非唯一哈希索引上执行 SQL 选择操作。
帕特里夏索引游标
\native\sql\api\sql-07-search\patricia // 示例代码
\target\bin\api_sql_07_search_patricia // 构建后运行
此示例演示了使用帕特里夏索引的游标操作。
R 树索引搜索
\native\sql\api\sql-07-search\rtree // 示例代码
\target\bin\api_sql_07_search_rtree // 构建后运行
此示例演示了使用 R 树索引进行空间搜索。
R 树索引搜索
\native\sql\api\sql-08-join // 示例代码
\target\bin\api_sql_08_join // 构建后运行
此示例通过不同的选择语句执行连接操作。
Group By用法
\native\sql\api\sql-09-functions\group-by // 示例代码
\target\bin\api_sql_09_functions_group_by // 构建后运行
此示例演示了 group by
子句的用法。
数学函数用法
\native\sql\api\sql-09-functions\math // 示例代码
\target\bin\api_sql_09_functions_math // 构建后运行
此示例演示了 SQL 数学函数的用法。
客户端实现
\native\sql\api\sql-10-rsql\client // 示例代码
\target\bin\api_sql_10_rsql_client // 构建后运行
此示例展示了客户端-服务器应用程序的客户端实现。
客户端实现
\native\sql\api\sql-10-rsql\server // 示例代码
\target\bin\api_sql_10_rsql_server // 构建后运行
此示例展示了客户端-服务器应用程序的客户端实现。
序列数据用法
\native\sql\api\sql-11-sequences // 示例代码
\target\bin\api_sql_11_sequences // 构建后运行
此示例演示了序列数据类型的用法。
交互式 SQL
\native\sql\api\sql-12-interactive // 示例代码
\target\bin\api_sql_12_interactive // 构建后运行
此示例演示了如何使用 DistributedSqlEngine 类创建一个交互式 SQL 实用程序。
管理分片
\native\sql\api\sql-13-aggregator // 示例代码
\target\bin\api_sql_13_aggregator // 构建后运行
此示例演示了如何在本地进程中使用 SqlAggregator 来管理数据库分片。
Cluster_DDL
演示在集群环境中使用 SQL API的 DDL 语句的用法。
- 使用诸如“
CREATE TABLE ...
”、“CREATE INDEX ...
”、“DROP TABLE ...
”等 SQL DDL 语句。 - 可根据命令行参数,启动了若干个线程。
- 一些线程执行 DDL 语句,其他线程则运行诸如“
INSERT ...
”、“UPDATE...
”和“DELETE ...
”之类的常规 DML 语句。
该示例使用与 cluster_demo 相同的命令行参数(即 -w、-l 等,含义相同),此外还使用了:
- -W <ddl_thread_num> :数据定义语言(DDL)线程的数量。可以为 0,在这种情况下仅执行网络事务。(默认值为 1)。
- -R <ddl_trans_rate> : 每秒最大 DDL 事务处理速率(单位:事务)。0 表示“无限”。(默认值为 100)。
- -N <ddl_trans_count> : 每个线程的 DDL 事务总数。(默认值为 5000)。
在控制台窗口中运行:
\target\bin\cluster_ddl 2 0
在第二个控制台窗口中运行:
\target\bin\cluster_ddl 2 1
集群中实现
演示在集群中使用 SQL C++ API 的方法。
使用诸如CREATE TABLE...
、CREATE INDEX...
、DROP TABLE...
等 SQL DDL语句的方法。
在控制台窗口中运行:
\target\bin\cluster_sql 2 0
在第二个控制台窗口中运行:
\target\bin\cluster_sql 2 1
高可用性主节点实现
此示例展示了使用 SQL API 实现 SmartEDB 高可用性的主节点端实现。
\native\sql\hasql_cpp\master // 示例代码
在控制台窗口中运行:
\target\bin\hasql_cpp_master
在第二个控制台窗口中运行:
\target\bin\hasql_cpp_replica
高可用性副本端实现
此示例展示了使用 SQL API 实现 SmartEDB 高可用性的副本端实现。
\native\sql\hasql_cpp\replica // 示例代码
在控制台窗口中运行:
\target\bin\hasql_cpp_master
在第二个控制台窗口中运行:
\target\bin\hasql_cpp_replica
标准ODBC函数
演示了如何结合使用标准 ODBC 函数和 SmartESQL ODBC 驱动程序连接到内存数据库。
此示例演示了标准 ODBC 函数与 SmartESQL ODBC 驱动程序结合使用,以连接到内存数据库。它还展示了从两个进程(simpleodbc 示例应用程序和 xSQL 实用程序)连接到共享内存数据库的能力。请使用此链接获取有关 SmartESQL ODBC 的概述。
\odbc\samples\simpleodbc // 示例代码
\target\bin\simpleodbc // 构建后运行
现在使用 xSQL 实用程序连接由 simpleodbc
创建的内存数据库,并执行简单的 SQL 操作,例如SELECT * FROM Person
。
TPC
展示了事务处理性能委员会基准 B 的一种实现方式
\native\sql\tpc // 示例代码
\target\bin\tpc // 构建后运行
TPC TL
展示了一个使用 SmartEDB 事务日志记录实现的事务处理性能委员会基准 B 的示例。
\native\sql\tpc_log // 示例代码
\target\bin\tpc_log // 构建后运行