QHB Features and Benefits
QHB Key Features
-
It supports modern database (DB) standards — ACID requirements:
- Atomicity;
- Consistency;
- Isolation;
- Durability.
-
It provides transaction isolation levels SERIALIZABLE, REPEATABLE READ, READ COMMITTED.
-
It supports access control using multi-versioning (MVCC — MultiVersion Concurrency Control).
It is used to maintain data consistency in a competitive environment. The system sees a copy of the data (a database version) at the start of the transaction despite the fact that the state of the database may have already changed, which prevents transaction from inconsistent data changes that could have been caused by another concurrent transaction and thus provides transaction isolation. The lock it holds for reading does not conflict with the lock for writing, and therefore reading never blocks writing and vice versa. -
It provides support for row-level locking.
-
It provides Write-Ahead Logging (WAL).
It allows you to recover the system after possible crashes. All changes must be written after the log records describing the actions have been flushed to disk. This eliminates the need to flush data pages to disk on every transaction commit, because we will always be able to recover the database using the transaction log. -
It provides referential integrity.
-
It provides expansion possibility.
It provides the ability to add new data types, functions, operators, access methods, programming languages without recompiling the database system core. -
It provides the ability to access external data.
It provides the ability to access external data for working with Microsoft SQL Server, MySQL, Oracle, and PostgreSQL database systems.
QHB Limits
Table 1 describes various hard limits of QHB. However, practical limits, such as performance limitations or available disk space may apply before absolute hard limits are reached.
Table 1. QHB Limitations
| Item | Upper Limit | Comment |
|---|---|---|
| database size | unlimited | |
| number of databases | 4,294,950,911 | |
| relations per database | 1,431,650,303 | |
| relation size | 32 TB | with the default BLCKSZ of 8192 bytes |
| rows per table | limited by the number of tuples that can fit onto 4,294,967,295 pages | |
| columns per table | 1,600 | further limited by tuple size fitting on a single page; see note below |
| columns in a result set | 1,664 | |
| field size | 1 GB | |
| indexes per table | unlimited | constrained by maximum relations per database |
| columns per index | 32 | can be increased by recompiling QHB |
| partition keys | 32 | can be increased by recompiling QHB |
| identifier length | 63 bytes | can be increased by recompiling QHB |
| function arguments | 100 | can be increased by recompiling QHB |
| query parameters | 65,535 |
The maximum number of columns for a table is further reduced as the tuple being stored must fit in a single 8192-byte heap page. For example, excluding the tuple header, a tuple made up of 1,600 int columns would consume 6400 bytes and could be stored in a heap page, but a tuple of 1,600 bigint columns would consume 12800 bytes and would therefore not fit inside a heap page. Variable-length fields of types such as text, varchar, and char can have their values stored out of line in the table's TOAST table when the values are large enough to require it. Only an 18-byte pointer must remain inside the tuple in the table's heap. For shorter length variable-length fields, either a 4-byte or 1-byte field header is used and the value is stored inside the heap tuple.
Columns that have been dropped from the table also contribute to the maximum column limit. Moreover, although the dropped column values for newly created tuples are internally marked as null in the tuple's null bitmap, the null bitmap also occupies space.
Each table can store a theoretical maximum of 2^32 out-of-line values; see
Section TOAST for a detailed discussion of out-of-line storage. This limit
arises from the use of a 32-bit OID to identify each such value. The practical
limit is significantly less than the theoretical limit, because as the OID space
fills up, finding an OID that is still free can become expensive, in turn slowing
down INSERT/UPDATE statements. Typically, this is only an issue for tables
containing many terabytes of data; partitioning is a possible workaround.
Platform Support
QHB supports platforms:
- Hardware platform x86-64.
Operating System Support
QHB supports the following FSTEC-certified operating systems:
-
OS Альт 8 СП (software product designation — ЛКНВ.11100-01) (certificate No. 3866);
-
Special Purpose OS «Astra Linux Special Edition» (model РУСБ.10015-01) x86_64, regular update 1.7, (certificate No. 2557);
-
Special Purpose OS «Astra Linux Special Edition» (model РУСБ.10015-01) x86_64, regular update 1.8, (certificate No. 2557);
-
OS «ROSA CHROME SERVER» (certificate No. 4818);
-
OS «РЕД ОС» (certificate No. 4060).
See Chapter Supported Platforms and Download Page for details.
Standardization and Unification
QHB supports the following standard, unified data types:
- integer types: INT, SMALLINT, BIGINT;
- arbitrary precision numbers;
- floating-point types: REAL, DOUBLE PRESISION, FLOAT;
- serial types;
- monetary types;
- character data types: VARCHAR(n), CHAR(n), TEXT;
- binary data types;
- date and time types: DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIMEZONE, INTERVAL;
- boolean type BOOLEAN;
- enumerated types;
- geometric types;
- network address types;
- bit string types;
- text search types;
- UUID type;
- XML type;
- JSON types;
- arrays;
- composite types;
- range types;
- domain types;
- object identifier types;
- pg_lsn type;
- pseudo-types.
Functional Characteristics
QHB has the following functional characteristics:
- approximate compliance with the SQL standard (SQL:2016, SQL:2011, SQL:2008, SQL:2006, SQL:2003, SQL:1999 и SQL-92);
- view support;
- foreign key support;
- transaction support;
- window function support;
- inheritance support;
- function and operator support;
- stored procedure support;
- support for various index types;
- availability of a built-in full-text search system;
- tablespace support;
- DB table trigger and event trigger support;
- procedural language support;
- UTF8 encoding support;
- NoSQL support;
- availability of software interfaces for working with C/C++, Java/JDBC, .NET, ODBC, Perl, Python, Ruby, Tcl;
- availability of built-in user authentication tools that support GSSAPI, SSPI, LDAP, RADIUS, PAM, BSD;
- SSL support;
- ability to restrict access to DB objects;
- ability to restrict access to tables at the row level;
- ability to securely store passwords;
- ability to integrate with SE-Linux subsystem.
Availability and Reliability
Message queue support at the DBMS kernel level.
QHB has the following features to ensure the safety of information in case of failures:
- availability of a failover cluster;
- availability of built-in data replication tools: synchronous, asynchronous, cascade;
- ability to use different types of data replication: streaming, logical;
- ability to build a failover cluster (master-slave) with an arbitrary number of replicas (slave servers) in different configurations (warm standby, hot standby);
- availability of built-in tools for "hot" backup and data recovery.
Performance and Scalability
Extended functionality of the disk block cache manager, resistant to cache leaching.
Dumping and loading the contents of the disk block manager to minimize the "cache warm-up" time.
To speed up work with tables, it is possible to create them with a special parameter HOLDMEM that specifies where they will be located.
QHB has the following features that ensure performance and scalability:
- optimization for multi-processor/multi-core servers:
- improved lock checking mechanism that does not negatively impact performance;
- improved performance when using multiple temporary tables in separate backups and with a large number of concurrent connections;
- increased planning speed and efficiency for various types of queries;
- availability of a cost optimizer that takes into account disk operations and processor time;
- ability to asynchronously commit transactions;
- ability to execute queries concurrently;
- ability to create and access indexes concurrently;
- ability for index-only scans (covering indexes);
- ability to work with a large number of temporary objects within one session;
- support for partitioning for large tables;
- APPEND_ONLY operating mode;
- ability to store data in shared memory using tables in RAM (In-Memory).
Administration and Monitoring
QHB has the following administration and monitoring features:
- ability to plan and control tasks, as well as manage their execution in the database (task scheduler);
- ability to use functions for handling variables of various types within the current session;
- implementation of a timeout for idle sessions on the server;
- availability of a unified Linux package structure;
- availability of a dedicated administrator connection;
- ability to collect statistics on the planning and execution of all SQL statements processed by the server.
Information Access Security
QHB can be used for secure processing of restricted access information that does not contain information constituting a state secret in information systems, together with other means of protecting information from unauthorized access to information in information systems.
QHB uses information security tools that comply with the information security requirements established in the document “Information security requirements establishing trust levels for facilities of technical protection of information and information technology security facilities” (FSTEC of Russia, 2020) – not lower than trust level 4.
QHB provides information security for data contained in the databases under its control by implementing the following processes:
- identification and authentication of access subjects and access objects, database access providing in case of successful user authentication, database access blocking in case of unsuccessful user authentication;
- access control of access subjects to access objects, provision of requested DBMS objects access types to users in accordance with the implemented access control method;
- security event registration;
- ensuring the integrity of the information system and information, blocking a database instance operation (launch) in the case of detection of integrity violations;
- blocking the subject's access to residual information upon initial assignment or when redistributing external memory (clearing external memory and RAM);
- ensuring the availability of information: backup and recovery of information contained in the database.
QHB provides automated means of supporting user account management to provide the following features (UPD.1 security measure, UPD.1 security measure enhancement 1):
- combining user accounts and roles into groups based on group roles;
- creating, activating, blocking and destroying user accounts (roles);
- correcting user accounts;
- granting users access privileges to DBMS access objects.
QHB provides the ability for one role to be a member of another. The attribute set that a user (role) with membership in other roles has is the union of the attributes granted to each role the user (role) is a member of.
QHB grants users (roles) with the WITH ADMIN OPTION attribute the ability to include and exclude other roles from membership in this role
Each access object in QHB is mapped to a user (role) who is the owner of that object. The privilege to delete an access object is granted only to a user (role) that has the SUPERUSER attribute or is the owner of this object. Besides the owner or a user with the SUPERUSER attribute the privilege to delete a table is granted to the owner of the schema that contents the table to be deleted. The user who owns the table is able to create indexes and rule systems for the table.
QHB performs user identification and authentication of database system users. Database system users are unambiguously identified and authenticated for all access types. User authentication is performed using passwords (security measure IAF.1)
QHB performs the following functions for managing DBMS user identifiers (security measure IAF.3):
- enabling the creation of a unique user identifier;
- assigning an identifier to a user;
- blocking an identifier;
QHB performs the following functions for managing authentication information (password) of DBMS users (security measure IAF.4):
- user password generation;
- user password change;
- advanced authentication policies.
QHB prevents the subject access to residual information when initial assignment takes place or external memory is reallocated.
Special Features
QHB contains built-in tools for calculating probabilistic models using Bayesian networks. The system uses the following algorithms:
- naive Bayes classifier;
- classifier based on the mutual information concept;
- Markov chain Monte Carlo methods.
QHB contains extended XML functions (for migration from Oracle DB).
QHB provides support for the bitemporal data model.
QHB provides external storage for large binary data (blob/clob/bytea).