This sample demonstrates a persistent database server using several disk files with a static dictionary defined in the
xsql.cfg
file . The server will insert data in the first file until its limit is reached, then to a second file.The config file looks like the following:
# # Simple In-Memory configuration # database_name : diskdb, devices : [ { type : memory, assignment : database, name : "diskdb-db", size : 10m }, { type : memory, assignment : cache, name : "diskdb-cache", size : 10m }, { type : file, assignment : log, name : "diskdb.log" }, { type : multifile, assignment : persistent, segment_size : 10m, name : "file1.dbs" }, { type : multifile, assignment : persistent, segment_size : 10m, name : "file2.dbs" } ], runtime_configuration : { debug_library : false, disk_support : true, shared_memory : false, transaction_manager : mursiw }, schema : " #define uint2 unsigned<2> declare database locatedb; class Employee { string name; uint2 dept_no; unique tree<name> Iname; tree<dept_no> Idept; }; ", db_params: { mem_page_size : 512, disk_page_size : 8192 }, sql_trace : false, sql_port : 5500, sql_statements : "INSERT INTO Employee(name, dept_no) VALUES (['Luke Skywalker', 'Han Solo', 'Darth Vader'], [1,1,2]);"Note that section
schema
defines the database with inline DDL text and thesql_statements
section specifies the SQL statements to be executed once the database has been created.This sample can be run from directory
samples\xsql\configs\multifile
with the following command:..\..\..\..\target\bin\xsql -c xsql.cfg -iWith xSQL started in interactive mode, we can now execute SQL statements. For example:
XSQL>select * from Employee; name dept_no ------------------------------------------------------------------------------ Darth Vader 2 Han Solo 1 Luke Skywalker 1 Selected records: 3