The business challenge

The beneficiary of our services is South Korea’s largest Internet company, operating the country top search portal. The company is fully committed to pioneering state-of-the-art technologies based on their continued research and investment in core development.
Many internal services were using Oracle, SQL Server, MySQL. The recurring licensing and support cost was too high. Plus there was a need of DBMS targeted on Korean/Asian markets. So the client decided to make an in-house DBMS.
The project’s first stable release dates back to October, 2008. Our team has joined in Jan 2009 and has been working continuously on the project since then. Over 100 organizations in Korea are now using CUBRID as their database management system.
Having a huge range of usability (web apps, commercial, banking, defence) CUBRID is an open source relational database management system that successfully competes with MySQL, PostgreSQL, MariaDB and other similar open source products.
Our solution
Our team involvement covered extending the database engine functionality (server, brokers and drivers), and improving the database stability, performance and scalability by proposing and implementing new features.
Top features developed included in the latest release are:
- Snapshot Isolation & Multiple-Version Concurrency Control

- Improved performance and scalability (lock-free hash table, lock-free circular queues, improved index access using page latch promotion, fixed IO flush rate issues, and other)
- Support TIMEZONE data types and functionsSupport TIMEZONE data types and functions
- Support BINARY charset for string types
- Support SYSTEMTAP for dynamic tracing and performance analysis
- Many other small features & fixes (the entire list in release notes)
Notable features developed from previous release are:
- Hierarhical queries
- Internationalization support
- Analytic functions
- MERGE statement
- Support JOIN for UPDATE and DELETE statements
- Support ENUM type
- Support Function-based and Filtered Indexes
- Index Skip Scan optimization
- Stability and performance of Partitioned Table Feature and PROMOTE statement
- Support SELECT FOR UPDATE statement
- Add schema locks
- Many other features, performance improvement tasks and fixes (all changes in release notes for 9.0, 9.1, 9.2 and 9.3)
Team setup
We embrace Agile methodologies in most of our projects. Many times it is our customers and partners who ask us to use Agile methodologies (Scrum, Kanban) from the inception of the project. When the choice is left to our engineers, we carefully analyze the project specifics, and we propose a project management methodology based on Scrum or Kanban which best fits the specific project needs and context.
Our team has joined in 2009 and has been continuously working on the project since then. The team consists in 10 R&D engineers specialized in advanced algorithms and data structures.
Using the Agile/Scrum methodology, we work in iterations of 2-3 months, we have weekly planning sessions and review and we use Jira as planning tool.
Architecture & Technologies
Architecture
- CUBRID has a 3-tier architecture which consists of the Database Server, the Broker, and the CUBRID Manager
- Database Server is the core component of the CURBID DBMS, which saves and manages data in a multi-threaded client/server architecture
- Broker is a CUBRID-specific middleware that relays the communication between the Database Server and external applications. It provides functions including connection pooling, data caching, monitoring, and log tracing and analysis
- CUBRID Manager is a GUI tool that manages database and broker. It also provides a Query Editor to execute SQL queries on the Database Server
Technologies
- C/C++ for server, broker and database utilities
- Java, C#, Python, Perl, PHP & many others for drivers
- Github for subversioning
- The project is open-source and can be found here: https://github.com/CUBRID/cubrid