CUBRID
   HOME

TheInfoList



OR:

CUBRID ( "cube-rid") is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
SQL-based
relational database management system A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relatio ...
(RDBMS) with object extensions developed by CUBRID Corp. for
OLTP In online transaction processing (OLTP), information systems typically facilitate and manage transaction-oriented applications. This is contrasted with online analytical processing. The term "transaction" can have two different meanings, both of wh ...
. The name CUBRID is a combination of the two words ''cube'' and ''bridge'', ''cube'' standing for a space for data and ''bridge'' standing for ''data bridge''.


License policy

CUBRID has a separate license for its server engine and its interfaces. The server engine adopts the Apache License 2.0, which allows distribution, modification, and acquisition of the source code. CUBRID
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
s and GUI tools have the
Berkeley Software Distribution The Berkeley Software Distribution or Berkeley Standard Distribution (BSD) is a discontinued operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berk ...
license in which there is no obligation of opening derivative works. The reason of adopting two separate license systems is to provide complete freedom to
Independent software vendor An independent software vendor (ISV), also known as a software publisher, is an organization specializing in making and selling software, as opposed to computer hardware, designed for mass or niche markets. This is in contrast to in-house software, ...
s (ISV) to develop and distribute CUBRID-based applications.


Architecture

The feature that distinguishes CUBRID database from other relational database systems is its 3-tier client-server architecture which consists of the database server, the connection broker and the application layer.


Database server

The database server is the component of the CUBRID database management system which is responsible for storage operations and statement execution. A CUBRID database server instance can mount and use a single database, making inter-database queries impossible. However, more than one instance can run on a machine. Unlike other solutions, the database server does not compile queries itself, but executes queries precompiled in a custom access specification language.


Connection broker

The CUBRID connection broker's main roles are: * management of client application connections * caching and relaying information (e.g. query results) * query syntax analysis, optimization and execution plan generation Also, a local object pool enables some parts of the execution to be deferred from the database server (e.g. tuple insertion and deletion, DDL statements), thus lowering the database server load. Since the connection broker is not bound to the same machine as the database server, CUBRID can take advantage of the hardware resources of several machines while processing queries on a single database.


Application layer

Applications can use one of the available
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
s to connect to a CUBRID connection broker.


Features


High Availability

CUBRID High Availability provides load-balanced, fault-tolerant and continuous service availability through its shared-nothing clustering, automated fail-over and manual fail-back mechanisms. CUBRID's 3-tier architecture allows native support for High-Availability with two-level auto failover: the broker failover and server failover.


Broker failover

When connecting to a broker via a client API, users can specify, in the connection URL, a list of alternative hosts where brokers are listening for incoming requests. In case of a hardware, network,
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
or software failure on one of the hosts, the underlying client API automatically fails over to the next host that a user has provided.


Server failover

The High Availability environment can be built with 1:N master-slave server nodes. Each slave node communicates with the master via CUBRID Heartbeat protocol. When a master node is unresponsive, the first of the slave nodes will get promoted to a master role. Replication between nodes can be achieved in one of two modes: synchronous and asynchronous. Administrators can specify a list of server hosts each broker can connect to and, in the event of a failure of the master node, another will be used.


Scalability and Maintainability


Backup

CUBRID supports online, offline and incremental backup.


Performance


API-level load balancing

Because a connection broker can be configured in four different modes (read-write, read-only, slave-only, preferred host read only), the list of alternative hosts which a user has provided via the connection URL can be used as a method to balance the load. When ''Load Balancing'' is used, the client API will randomly choose a host among those specified in the connection URL except the one which was used to connect to last time. If the chosen host is not available, the selection will continue until all the hosts are determined as unavailable. In such case, the driver will report an error.


Query plan caching

A query execution plan
cache Cache, caching, or caché may refer to: Places United States * Cache, Idaho, an unincorporated community * Cache, Illinois, an unincorporated community * Cache, Oklahoma, a city in Comanche County * Cache, Utah, Cache County, Utah * Cache County ...
is implemented on the broker in order to skip most of the compilation steps on often used queries. Because the queries are parametrized during parsing, two queries that differ only by the values of literal constants share the same cache entry.


Storage


Indexes

CUBRID has support for B+-tree indexes, both single-column and multi-column. The following types of indexes can be created: * Indexes and reversed indexes * Unique indexes and reverse unique indexes * Function-based indexes * Filtered indexes The
query optimizer Query optimization is a feature of many relational database management systems and other databases such as NoSQL and graph databases. The query optimizer attempts to determine the most efficient way to execute a given query by considering the pos ...
can use indexes to produce faster execution plans using methods such as: * Identifying covering indexes * Descending index scans * ORDER BY skip * GROUP BY skip * Multi-range limit optimizations * Index Loose Scan * Index Skip Scan


Table partitioning

CUBRID supports horizontal partitioning by range, hash and value lists, with a maximum of 1024 partitions per table. Partitions can be accessed independently and support most operations that are valid on a normal table. As of version 9.0, CUBRID implements execution-time partition
pruning Pruning is a horticultural, arboricultural, and silvicultural practice involving the selective removal of certain parts of a plant, such as branches, buds, or roots. The practice entails the ''targeted'' removal of diseased, damaged, dead, ...
.


SQL support

CUBRID implements a large subset of the ANSI SQL:1999 standard, extended with features from later SQL standards and custom features.


Window functions

CUBRID provides support for
window functions A window is an opening in a wall, door, roof, or vehicle that allows the exchange of light and may also allow the passage of sound and sometimes air. Modern windows are usually glazed or covered in some other transparent or translucent mater ...
as defined in the SQL:2003 standard. The implemented functions are ''ROW_NUMBER'', ''COUNT'', ''MIN'', ''MAX'', ''SUM'', ''AVG'', ''STDDEV_POP'', ''STDDEV_SAMP'', ''VAR_POP'', ''VAR_SAMP'', ''RANK'', ''DENSE_RANK'', ''LEAD'', ''LAG'' and ''NTILE''.


Hierarchical queries

Hierarchical queries using the non-standard START WITH ... CONNECT BY
Oracle An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination. Description The word '' ...
syntax are supported in CUBRID. A number of specialized pseudocolumns and operators are provided for controlling the behavior of the query execution.


Built in click-counter

CUBRID optimizes the common scenario in web applications where database fields need to be incremented on certain events (e.g. page views). In contrast to the usual approach of using a SELECT/UPDATE statement combination, CUBRID can increment fields from within the SELECT statement execution, bypassing some expensive compiling, execution and locking overhead associated with an UPDATE statement.


Java stored procedures

The only
stored procedure A stored procedure (also termed proc, storp, sproc, StoPro, StoredProc, StoreProc, sp, or SP) is a subroutine available to applications that access a relational database management system (RDBMS). Such procedures are stored in the database data dic ...
language supported in CUBRID is
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
, requiring a
Java virtual machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
to be installed on the system. The virtual machine is started and managed by the server and is used for code execution. Stored procedure code that requires database access must use the
JDBC Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
driver, either using the parent transaction or issuing a new one.


Regular expression

In addition to the LIKE operator, CUBRID provides the REGEXP operator for
regular expression A regular expression (shortened as regex or regexp; sometimes referred to as rational expression) is a sequence of characters that specifies a search pattern in text. Usually such patterns are used by string-searching algorithms for "find" or ...
pattern matching. By default, the operator does a case insensitive matching on the input string, but the modifier BINARY can be used for
case sensitive Case or CASE may refer to: Containers * Case (goods), a package of related merchandise * Cartridge case or casing, a firearm cartridge component * Bookcase, a piece of furniture used to store books * Briefcase or attaché case, a narrow box to ca ...
scenarios. An optional alias of REGEXP is RLIKE. In the prior version of CUBRID 11, CUBRID does not support REGEXP on
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
strings. From the CUBRID 11, CUBRID adds the following regular expression functions and supports them on
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
strings. * ''REGEXP_COUNT'', ''REGEXP_INSTR'', ''REGEXP_LIKE'', ''REGEXP_REPLACE'', ''REGEXP_SUBSTR''


Data types

A variety of
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
s are supported by CUBRID: * For numeric values: ** integer numerics: ''SMALLINT'' (16 bit), ''INTEGER'' (32 bit), ''BIGINT'' (64 bit) **
floating point In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
numerics: ''FLOAT'' (32 bit), ''DOUBLE'' (64 bit) **
arbitrary precision In computer science, arbitrary-precision arithmetic, also called bignum arithmetic, multiple-precision arithmetic, or sometimes infinite-precision arithmetic, indicates that calculations are performed on numbers whose digits of precision are lim ...
numerics: ''NUMERIC'' ** monetary values: ''MONETARY'' (
double precision Double-precision floating-point format (sometimes called FP64 or float64) is a floating-point number format, usually occupying 64 bits in computer memory; it represents a wide dynamic range of numeric values by using a floating radix point. Flo ...
floating point) * For string values: ** fixed-length character and bit strings: ''CHAR'', ''BIT'' ** variable-length character and bit strings: ''CHAR VARYING'', ''BIT VARYING'' * For date and time values: ** date values: ''DATE'' ** time values: ''TIME'' ** date and time values: ''DATETIME'', ''TIMESTAMP'' (internally stored as a Unix timestamp) * For collections: ''SET'', ''MULTISET'', ''LIST'' * User defined
enumerations An enumeration is a complete, ordered listing of all the items in a collection. The term is commonly used in mathematics and computer science to refer to a listing of all of the elements of a set. The precise requirements for an enumeration (fo ...
: ''ENUM'' * For large objects: ''BLOB'', ''CLOB'' * For JavaScript Object Notation: ''JSON''


Supported platforms

CUBRID is available for
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
and
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
(most distributions), for 32- and 64-bit architectures.


Interfaces


Command line

CUBRID comes with a built-in command-line interface named ''csql'' that can be used to execute SQL statements on the CUBRID server. The tool can be used in one of two modes: * CS (''client/server'') mode, which can connect to local or remote CUBRID servers * SA (''stand alone'') mode, used mainly for administration purposes, which mounts a local database by emulating a server instance CUBRID's ''csql'' also implements some internal commands related to schema information, plan generation, debugging, transaction control, query timing and more.


Programming

CUBRID provides a number of language-specific
application programming interface An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
s: C driver (also called ''CCI'', CUBRID's native driver),
JDBC Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
,
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group ...
/PDO driver,
ODBC In computing, Open Database Connectivity (ODBC) is a standard application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. An ...
,
OLEDB OLE DB (''Object Linking and Embedding, Database'', sometimes written as OLEDB or OLE-DB), an API designed by Microsoft, allows accessing data from a variety of sources in a uniform manner. The API provides a set of interfaces implemented using ...
, ADO.NET,
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
driver,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
driver,
Node.js Node.js is an open-source server environment. Node.js is cross-platform and runs on Windows, Linux, Unix, and macOS. Node.js is a back-end JavaScript runtime environment. Node.js runs on the V8 JavaScript Engine and executes JavaScript code o ...
driver and
Perl Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offici ...
driver.


Graphical

Several
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
tools have been developed for CUBRID: * CUBRID Manager is a query browser and database administration tool distributed under the
BSD license BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD lic ...
on macOS and Linux. * CUBRID Admin is an administration tool distributed under the
BSD license BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD lic ...
on Windows. * SQLGate is a query browser tool developed by CHEQUER on Windows. * CUBRID Migration Toolkit is a tool which allows data migration from Oracle, MS-SQL, MySQL and previous versions of CUBRID databases to the latest CUBRID database server.


Release history


Applications

Some applications and websites that have added CUBRID support or are powered by CUBRID: * jOOQ *
SOFA Statistics SOFA Statistics is an open-source statistical package. The name stands for ''S''tatistics ''O''pen ''F''or ''A''ll. It has a graphical user interface and can connect directly to MySQL, PostgreSQL, SQLite, MS Access (map), and Microsoft SQL Ser ...
* SIDU * ART * Scriptella * JWhoisServer * Yii2 PHP Framework * RedBeanPHP *
DBeaver DBeaver is a SQL client software application and a database administration tool. For relational databases it uses the JDBC application programming interface (API) to interact with databases via a JDBC driver. For other databases (NoSQL) it uses ...


See also

*
Comparison of relational database management systems The following tables compare general and technical information for a number of relational database management systems. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are b ...
* Comparison of object-relational database management systems *
List of relational database management systems This is a list of relational database management systems. List of software * 4th Dimension *Access Database Engine (formerly known as Jet Database Engine) *Adabas D *Airtable *Apache Derby *Apache Ignite * Aster Data *Amazon Aurora *Altibase * CA ...


References


External links

* {{Official website, cubrid.org Free database management systems Relational database management systems Client-server database management systems Cross-platform software ORDBMS software for Linux