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
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 two separate command line windows from directory
samples\xsql\configs\ha
with 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