xSQL Sample Multifile

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 the sql_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 -i
     

With 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