Linter is a family of database management systems supporting the relational data model in various-application automated control systems, real-time systems and mission-critical systems with high requirements to data reliability, security and confidentiality.
According to the relational model, the data in the database is logically represented as two-dimensional tables, making user programs relatively independent of physical data representation and providing a user-friendly system.
The data in tables is stored in rows. A row may comprise data of different types (characters, integers, real numbers, character strings of different length etc.).
Linter allows the user to perform the following actions:
- delete/alter/add database objects (data, indexes, tables, stored procedures, triggers);
- enter/edit/remove data integrity constraints;
- use the full set of capabilities of the standard SQL language;
- work with big (up to 2Gb) byte objects (BLOB);
- import/export data from/to ASCII and DBF files;
- lock/unlock access to tables/rows;
- use various transaction processing modes (in applications and stored procedures);
- organize and use a flexible and reliable data security system (certified by the Russian FSTEC as compliant with Class 2 data security requirements);
- save/restore the entire database or separate database objects and set the saving schedule and algorithms;
- translate queries (with or without parameters) and use pre-translated queries to accelerate the operation of applications;
- create, debug and run stored procedures and triggers;
- use real-time capabilities (transaction priorities, asynchronous query execution, process tracking, suspending and cancelling transactions etc.).
The last two items are undoubtedly important in developing and using multi-task applications. These capabilities allow the user to customize Linter for a particular application and to accelerate the operation of the system.
Linter uses uniform facilities to access data from user programs. The data access facilities, as well as all the program interfaces, are based on the Call interface.
The Linter software structure is shown in the figure below:
DBMS Linter Components
The Linter distribution includes the following components:
- DBMS Linter kernel (system kernel, SQL translator, sorting processor, stored procedure compiler, network drivers, distributed transaction manager);
- database service programs (system database generator, physical structure testing utility);
- administration interfaces (administrator tools, stored procedure manager with an embedded debugger, interactive SQL interface);
- application development tools (embedded SQL for C/C++);
- data saving/restoration tools (including “hot” archiving, quick uploading/downloading of the entire database or its components etc.);
- database migration facilities (import from DBF, ODBC migration tool etc.);
- interfaces of different levels (ODBC driver, interface for direct access to Linter from Delphi/Kylix/C++ Builder, Java interface, API interface, Call interface etc.).
Linter is equipped with multiple service facilities, including various interfaces and application development tools:
Inl (interactive/batch SQL interface);
administrator tools: Ldba (desktop), Adm (command), Lindesk (graphic), making it possible to get any available information about the database/DBMS state and perform any available actions;
PCI (embedded SQL for C and C++);
ODBC (ODBC 3.x interface);
OLE DB (data access interface for the Windows environment);
Php interface enabling access to all DBMS Linter resources from PHP programs;
dbExpress (interface for direct access to DBMS Linter from Delphi/Kylix/C++ Builder);
Jdbc (interface for JDBC 1.0, 2.0, 3.0);
Lintcl (interface supporting tcl/tk);
LinPy (interface to access data from Python);
Oralin (interface for using DBMS Linter from programs developed using the OCI interface of Oracle);
embedded SQL for using queries in programs written in C and Pascal. This usage of Linter is very convenient for the developer, besides, using SQL eliminates the extra routing work;
LinApi (LINter Application Program Interface), a low-level interface for developing complex programs in C. Programs using LinApi calls may contain pre-translated queries, asynchronous queries, query priorities etc.