This sample demonstrates a High Availability configuration. It includes master and replica nodes, both using an in-memory database. A static schema is declared in the config files.
The config files looks like the following:
xsql_master.cfg:# # Simple In-Memory configuration # database_name : imdb, database_size : 20m, runtime_configuration : { debug_library : false, disk_support : false, shared_memory : false, transaction_manager : mursiw }, schema : " #define uint2 unsigned<2> declare database locatedb; declare auto_oid [2000]; 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 }, ha_params: { master_ports : [ 6000 ], # cancel_port : 10000 }, sql_trace : false, sql_port : 5500, sql_statements : "INSERT INTO Employee(name, dept_no) VALUES (['Luke Skywalker', 'Han Solo', 'Darth Vader'], [1,1,2]);"
xsql_replica.cfg:# # Simple In-Memory configuration # database_name : imdb, database_size : 20m, runtime_configuration : { debug_library : false, disk_support : false, shared_memory : false, transaction_manager : mursiw }, schema : " #define uint2 unsigned<2> declare database locatedb; declare auto_oid [2000]; 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 }, ha_params: { master_ports : [6001], connection_strings : ["localhost:6000"] }, sql_trace : false, sql_port : 5501Note that section
schemadefines the database with inline DDL text and thesql_statementssection specifies the SQL statements to be executed once the database has been created.This sample can be run from two separate command line windows from directory
samples\xsql\configs\hawith the following command:..\..\..\..\target\bin\xsql -c xsql_master.cfg -iAnd
..\..\..\..\target\bin\xsql -c xsql_replica.cfg -ieXtremeDB will start the master and insert records into it. When the replica is attached, a copy of the master database will be downloaded to it. With xSQL started in interactive mode, we can now execute SQL statements from both master and replica consoles.
For example:
XSQL>select * from Employee; name dept_no ------------------------------------------------------------------------------ Darth Vader 2 Han Solo 1 Luke Skywalker 1 Selected records: 3