Background Image

ABOUT

Enterprise Open Source DBMS

CUBRID is an open source DBMS optimized for OLTP. It offers great read and write performance than other database systems. It assures high performance, stability, scalability and high availability which are required for mission-critical applications. In addition, CUBRID provides ease of installation and native GUI-based administration tools for developers' convenience.

We are committed to continuously improve the CUBRID features, the quality and the performance of the engine, drivers, and tools. We have focused on pursuing the best quality for more than 20 years. And we will highly appreciate your contribution on CUBRID project for building a better end-user experience.

 


Major Features

  • High Availability

    CUBRID enables you to setup master/slave or master/slave/replica configurations. We use transaction logs to replicate changes from master server to slave and replica server while providing accurate and predictable fail-over and fail-back features based on CUBRID heartbeat. You can configure the HA environment in two copy modes for transaction log replication: synchronous and asynchronous modes.

    Your choices of architectural configurations range from simple single master/slave, which provides basic fail-over/fail-back services, to multi master/slave configuration and master/slave/replica for intensive read scenarios.

  • High Performance

    Connection pooling and query plan cache ensure the fast response time for your queries. Cost-based optimizer and various index optimizations (covering, multi-range, skip scan, filter index, function index) provide the most suitable execution path and execution time. The query cache hint can be used to enhance the performance for the query which is executed repeatedly.

    The multi-threaded, multi-server architecture combined with the broker middleware provides you more space for hardware deployment choices. It also provides better user context isolation: a Client Application Server process handles one single user (single process) at one time, minimizing risk in case of fatal crashes, returning overall better service time.

    Internationalization, time zone support, and various SQL extensions as MySQL and Oracle compatible functions and statements give you more freedom in designing, converting or importing your database and queries. You may use the embedded query plan viewer and optimization hints to detect intensive workloads and fine-tune your queries. An integrated system of statistics allows gathering on-demand data about your live production server, allowing you to make operational decisions to detect bottlenecks, optimize performance or reconfigure architecture or hardware.

  • Scalability and Large Data Optimization

    CUBRID's design and architecture allow both horizontal and vertical scalability. The database volumes (files), as well as the number of columns, can grow online if needed. There is virtually no limit on the size of the database, the number of tables or indexes, and the number of rows in a table. Multiversion Concurrency Control (MVCC), lock free hashes, row level and lock escalation, promotable read-to-write page latches, and similar performance optimizations enables you to keep the same level of performance when the amount of data and work increases. We also care about storage, by reusing deleted space and promptly vacuuming unneeded data, while keeping in check the I/O and memory usage.

  • Reliability/Operability

    Restore and online backup based on WAL (Write-Ahead-Logging) protocol guarantees the consistency and correctness of your database even in case of software or hardware failures. There are three possible levels of backup: full, first incremental, and second incremental providing various freedom of choice of backup size and duration versus the level of confidence.

    You may choose the number of parallel backup jobs to balance with the online server activity, compression level to prioritize between CPU usage and size of backup or optional integrity checks. Restore is possible at a point of time or the time of failure.

    Tools are available to check and repair the database, and to compact the database to make space usage as efficient as possible.

    User access may be controlled at table level and type of access, with IP/user/database filters.

    In High Availability configuration, the fail-over is automatic, guaranteeing no loss of data is possible.

    Non-critical system parameters may be changed online, allowing fast and instant changing of behavior.

  • Ease of Development

    We provide various set of resources consisting of in-depth online manuals, release notes, API documentations, tutorials, and usage examples.

    Extended list of APIs: JDBC, PHP/PDO, ODBC, ADO.NET, OLEDB, Python, Perl, Ruby, C, Node.js and Go is available to match and integrate with your application.

    Several native tools for database administrators and developers are provided:
    - CUBRID Manager: database administration tool with the integrated SQL Query editor
    - CUBRID Migration Toolkit: the smooth bridge between your MySQL/Oracle/CUBRID databases

    CUBRID supports an extended SQL syntax and compatibility with MySQL and Oracle

    Support for key Oracle SQL features such as Hierarchical Queries and more.

  • Major RDBMS Features

    MVCC (Multiversion Concurrency Control) enabling high performance and scalability, eliminating deadlocks

    Seamless transactions: commit/rollback/savepoint

    Transactions consistency in backup/restore/replication/HA

    SQL-92 standard compliance and extended SQL syntaxes

    View/Trigger/Primary key/Auto increment/Foreign key/Serial/Java Store Procedures

  • Security

    CUBRID supports Transparent Data Encryption (henceforth, TDE). TDE means transparently encrypting data from the user’s point of view. This allows users to encrypt data stored on disk with little to no application change.

    CUBRID uses SSL/TLS (Secure Socket Layer/Transport Layer Security) protocol to encrypt data transmitted between the client and the server. The CUBRID server uses OpenSSL for encryption, and the client can make an encrypted connection using JDBC or CCI Driver. The encryption protocols supported between the client and server are SSLv3, TLSv1, TLSv1.1, and TLSv1.2.


High Availability

CUBRID HA enables OLTP services to be highly available and to balance traffics efficiently. CUBRID HA can be configured with a master node to process Read/Write loads, a slave node to replace the master on failure, and a replica node to distribute Read loads. The following table shows three types of CUBRID HA system.

  • HA Default (M:S:R = 1:1:0)

    HA Default system consists of a single master and slave nodes to provide highly available services.

  • HA Extended (M:S:R = 1:N:0)

    HA Extended system consists of a single master and N slave nodes for both high availability and load balancing. This type enables server duplication between two data warehouses.

  • HA Load Distributed (M:S:R = 1:1:N)

    HA Load Distributed system consists of HA Default nodes as well as multiple replica nodes for distributing read loads. A master in this system uses fewer resources than the one in HA Extended system.

image

[CUBRID Broker Duplication and Automatic Fail-over]

image

[CUBRID DB Server Duplication and Automatic Fail-over]

DBLINK

CUBRID DBLINK for Querying External Databases

CUBRID DBLink provides the ability to perform complex queries, such as joins, using data from CUBRID or heterogeneous DBMSs. It has the same effect as querying information from an external database in a single database. However, you can set up multiple external databases, but when you query information, you can only query information from one other database.

CUBRID DBLink is available in DBLINK syntax format, which specifies the server to be connected to and the query to be executed in the FROM clause of SELECT, and in remote table (table extension) format, and INSERT/REPLACE/UPDATE/DELETE/MERGE syntax is available only in remote table format.

In the configuration diagram for retrieving information from external databases of the same model, you can connect to brokers of the same model using CCI on the Database Server to retrieve information from external databases.

A schematic for retrieving information from heterogeneous databases shows how the gateway can be used to retrieve information from heterogeneous databases. Gateway relies on the ODBC(Open DataBase Connectivity) driver of the databases it connects to.

image
image

Sharding

CUBRID SHARDING for distributed processing of large amounts of data

- As a form of middleware to minimize changes to existing applications, you can access sharded data transparently using commonly used JDBC or CCI, the CUBRID C API.
- It can be used by adding hints to existing queries by using hints to select the shard to perform the actual query.
- Guaranteed characteristics of partial transactions.

CUBRID SHARD is middleware that sits in the middle of applications and physically or logically partitioned shards, maintaining connections with multiple applications at the same time, forwarding requests from applications to the appropriate shard for processing and returning the results to the application.

The CUBRID SHARD middleware consists of three processes: broker/proxy/CAS, and the brief functions of each process are as follows.

image

- broker
       • After receiving initial connection requests from drivers such as JDBC/CCI,
        forward received connection requests to the proxy according
        to the load balancing policy
       • Monitor and recover the status of the proxy process and CAS process
- proxy
       • Forward user requests from drivers to CAS, and return the processed results
        to the application
       • Manage connection state and process transactions with the driver and CAS
- CAS
       • After creating a connection to the partitioned shard DB, use the connection
        to process user requests (queries) received from the proxy
       • Transaction processing

Join the CUBRID Project on