SQL Data Definition Language

With eXtremeSQL there are two methods of defining the database schema. An embedded eXtremeSQL application developed with the C or C++ API will often use a database initially defined with the eXtremeDB DDL. Java, C# and Python applications will define database classes and indexes using the native language syntax. When using xSQL to create a database, the schema is specified in the schema section of the configuration file either by importing a schema definition file or by defining the schema in a text string using eXtremeDB DDL.

Alternatively the database could be created and/or altered with the dynamic SQL Data Definition Language (DDL) statements create table, create_index, alter table, alter index, drop table and drop index. These SQL DDL statements can be executed by the embedded eXtremeSQL application or by xSQL.

ODBC and JDBC drivers are also provided to allow database management from other third party database tools and applications that choose to use these "middleware" drivers.

eXtremeSQL and Dynamic DDL Statements

During the application design phase the developer must decide if dynamic schema changes will be allowed. If so then all database access must be implemented through SQL or the UDA API; any operations using the generated C or C++ API, i.e. functions generated by mcocomp, become invalid.

A dynamic schema is implemented by specifying limits for the maximum number of classes and indexes in the database. When the SQL create table statement is executed it creates a definition of the new table using the eXtremeSQL API. Then the current database dictionary (in binary form maintained by the eXtremeDB runtime) is converted to SQL DDL format, the new table is also represented using SQL DDL and appended to the existing database schema. Then this new SQL DDL schema is converted back to an eXtremeDB dictionary and stored in place of the old dictionary. In order to make this possible, space is reserved when allocating the dictionary. Hence the need to specify the maximum number of classes and indexes.

A eXtremeSQL application using the C or C++ API specifies the maximum number of classes and indexes and the maximum dictionary size in the db_params structure. For example:

 
    db_params params;
    params.max_classes = 150;
    params.max_indexes = 120;
    params.ddl_dict_size = 128 * 1024;
     

Java and C# applications set the corresponding Database::Parameters properties maxClasses, maxIndexes and maxDictionarySize. For example:

 
    Database.Parameters dbParams = new Database.Parameters();
    dbParams.MaxClasses = 150;
    dbParams.MaxIndexes = 120;
    dbParams.MaxDictionarySize = 128 * 1024;
     

Python applications pass these values as arguments max_classes, max_indexes and maxDictionarySize to function open_database(). For example:

 
    db = exdb.open_database(dbname='opendb', dictionary=dict, is_disk=is_disk,
                    db_segment_size=128*1024*1024,
                    max_classes=100, max_indexes=1000,
                    maxDictionarySize=16*1024)

When using xSQL to create a database these parameters are specified in the db_params section of the configuration file. For example:

     
    db_params: {
        ddl_dict_size: 128 * 1024,
        max_classes : 150,
        max_indexes : 120,
    }
     

 

The eXtremeSQL syntax and detailed information for the SQL DDL statements are provided in separate pages. Please use the links below to view the individual statement specs:

create table Create an SQL table (corresponds to eXtremeDB class)
alter table Alter an SQL table
drop table Drop or remove an SQL table
create index Create an index
drop index Drop or remove an index
create synonym Create an alias (synonym)
drop synonym Drop or remove an alias (synonym)