Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

2.1

InfiniFlux의 기능 특징

InfiniFlux는 전통적인 데이터베이스가 가지고 있지 않은 아래와 같은 혁신적인 특성들을 가지고 있다.

Write Once, Read Many

로그성 머신 데이터는 일단 데이터베이스에 입력되면 변경 또는 삭제되는 경우가 거의 없다.

따라서, InfiniFlux는 머신 데이터에 대한 특성을 최대한 살리기 위해 한번 입력된 데이터에 대해서는 UPDATE가 발

생할 수 없도록 설계 되었다.

사용자는 한번 입력된 로그 데이터를 다른 악의적 사용자에 의해 변조되거나, 삭제될 위험성에 대해 걱정할 필요가 없

다.

MVCC(Multi Version Concurrency Control) 지원

로그성 머신 데이터 처리하는데 가장 중요한 것은 데이터의 입력, 변경, 삭제 연산과 읽기 연산이 서로 충돌하지 않고

가능한 독립적으로 처리되어야 한다는 것이다.

이 때문에 InfiniFlux는 SELECT 연산에 대한 어떠한 Lock도 할당 받지 않도록 설계되었고, 변경 연산인 입력 혹은 삭

제와도 서로 절대로 충돌하지 않는 고성능 구조로 설계되었다.

따라서 수십만 건의 데이터가 입력되고, 실시간으로 일부가 삭제되는 상황에서도 SELECT 연산은 수백만 건의 레코드

에 대한 통계 연산을 빠른 속도록 진행할 수 있다.

78 | InfiniFlux 특징

초고속 데이터 저장

InfiniFlux는 기존의 데이터베이스보다 수십배의 빠른 데이터 저장 성능을 제공한다. 특정 데이블에 인덱스가 다수 존

재하는 상황에서도 최소 초당 300,000 건에서 최고 2,000,000 만건까지 데이터를 받아들일 수 있다.

이것이 가능한 이유는 InfiniFlux가 시계열 데이터를 최적화하는 구조로 설계되었기 때문이다.

실시간 인덱스 구성

InfiniFlux는 인덱스가 많으면 많을수록 데이터 입력 성능이 비례적으로 느려지는 전통적인 데이터베이스 구조를 혁

신적으로 개선하여, 초당 수십만건의 데이터가 입력되더라도 거의 실시간으로 인덱스를 구성할 수 있다. 이 특징은 실

제 데이터가 발생하는 순간의 즉시 검색할 수 있는 강력한 기능적인 토대를 제공해 주기 때문에 머신 데이터와 같은

시계열 데이터 분석에 있어서는 핵심적인 기술이다.

실시간 데이터 압축

머신 데이터와 같은 시계열 데이터의 특징은 끊임없이 데이터가 발생한다는 것이다. 이 사실은 필연적으로 해당 데이

터베이스의 저장 공간이 언젠가는 부족해질 뿐만 아니라, 처리해야 할 데이터를 충분하게 보유하지 못한다는 의미이

다.

특히, 전통적인 데이터베이스는 데이터 뿐만 아니라 인덱스가 늘어남에 따라 차지하는 데이터 공간의 급격하게 증가

하기 때문에 머신 데이터의 저장과 분석에 매우 부적절한 구조이다.

InfiniFlux는 쏟아져 들어오는 데이터에 대해 혁신적인 실시간 압축 기술 2 가지를 통해 성능 저하 없이 적게는 수십배

에서 수백배까지 데이터를 압축하여 저장한다.

첫 번째로 InfiniFlux는 논리적 실시간 데이터 압축 기술을 지원한다. 이는 컬럼형 데이터베이스에서 유래한, 머신 데

이터의 데이터 중복성을 이용한 것으로서 동일한 값을 갖는 데이터가 많으면 많을수록 데이터의 중복을 코드화하여

데이터 저장공간을 혁신적으로 줄이는 기술이다. 이를 통해 데이터의 중복성이 높은 데이터에 대해 수백배까지 데이

터를 압축할 수 있다.

두 번째는 InfiniFlux의 특허 기술인 물리적 데이터 압축기술이다. 이는 디스크에 저장될 물리적인 데이터 블럭을 미

리 일정한 크기의 파티션으로 나누어 압축하여 디스크에 별도로 내림으로써 저장될 물리적 데이터의 량을 줄이고, 더

불어 시스템이 유발시키는 I/O 비용을 급격하게 낮추는 기술이다. 이를 통해 실제 논리적으로 압축된 데이터를 다시

한번 더 압축하여 저장 공간의 효율성을 높이는데 일조한다.

Copyrightc 2014 InfiniFlux All Rights Reserved.InfiniFlux의 기능 특징 | 9

탁월한 분석 성능

InfiniFlux의 혁신적인 기술적 우월성은 초당 수십만 건의 데이터를 입력하는 와중에도 이미 저장된 과거의 수백만 혹

은 수천만 건의 데이터에 대한 검색 및 통계 분석 성능이 매우 빠르다는 것이다.

삽입과 분석 모두에 탁월한 성능을 제공하는 InfiniFlux 만의 인덱싱 기술 때문에 가능한 것이며 실시간 비즈니스 의

사 결정에 핵심적인 역할을 수행할 것이다.

InfiniFlux 전통적인 데이터베이스와 달리 두 개 이상의 인덱스를 하나의 질의문에서 처리할 수 있기 때문에 병렬로

데이터를 처리할 경우 몇 배나 더 빠른 성능을 기대할 수 있다.

아래는 다음과 같은 질의문에 대해 두 개 이상의 인덱스를 활용하는 경우를 나타낸 것이다.

select * from table1 where c1 = 1 and c2 = 2;

시계열 데이터 특성 SQL 구문 지원

로그성 머신 데이터의 경우 최신 데이터가 예전의 데이터보다 몇 배 더 가치가 있으며 데이터의 접근 빈도도 최근 데

이터가 예전 데이터보다 몇 배 더 많은 특징이 있다.

이런 이유로 InfiniFlux는 아래와 같은 시계열 데이터 특징을 지원한다.

첫째, InfiniFlux는 레코드가 데이터베이스에 저장되는 순간 나노 세컨드 단위의 timestamp를 _arrival_time이라는

필드로 저장한다. 이 의미는 InfiniFlux가 저장하는 모든 레코드는 시간을 기준으로 검색하거나 조건을 줄 수 있다는

것이다.

둘째, 데이터 검색시 최근 시간이 예전 시간 보다 먼저 출력된다. 즉, SELECT를 수행할 때 최근 데이터가 먼저 출력된

다는 것이다. 앞에서 언급한 _arrival_time 컬럼 기준으로 descendant order by를 한 것과 같은 결과이다.10 | InfiniFlux 특징

셋째, DURATION 키워드를 제공한다. 머신 데이터 분석의 경우 특정 시간 범위를 지정하는 경우가 많기 때문에 SQL

레벨에서 이러한 특성을 제공한다. 이를 통해 복잡한 시간 연산자를 where 절에 주지 않더라도 편리하게 데이터를

분석할 수 있다.

사용 예1) 지금 부터 10분 전까지의 데이터 통계를 내어라.

select sum(traffic) from t1 DURATION 10 minute;

사용 예2) 지금 부터 1시간 전에 30분간의 데이터 통계를 내어라.

select sum(traffic) from t1 DURATION 30 minute BEFORE 1 hour;

텍스트 검색 기능 지원

로그성 시계열 데이터를 저장하고 활용하는 사용자의 가장 중요한 실제 용도 중 하나는 특정 시점에 특정 event 가 발

생했는지를 확인하는 것이다.

특정 시점의 경우 시계열 데이터 처리로 가능하지만, 특정 event가 발생한 것은 대부분의 경우 특정 컬럼에 저장된 te

xt field에서 특정 "단어"를 찾는 행위가 필요하다.

그러나, 전통적 데이터베이스에서는 특정 필드의 단어를 검색하기 위해서는 B+ Tree를 통해 exact match 혹은 LIKE

절을 통해 최초 일부 캐릭터의 조건을 검사하게 되는데, 대부분의 경우 이는 매우 느린 응답 결과를 초래한다.

그런 이유로 전통적인 데이터베이스에서 특정 단어에 대한 검색은 매우 취약하다.

반면, InfiniFlux에서는 실시간 검색을 위해 LIKE와 함께 SEARCH라는 SQL 키워드를 제공함으로써 실시간 단어 검색

이 가능하도록 하였다.

사용 예1) msg 필드에 Error 혹은 102를 포함하는 레코드를 출력해라.

select id, ipv4 from devices where msg search 'Error' or msg search '102';

사용 예2) msg 필드에 Error 그리고 102를 포함하는 레코드를 출력해라.

select id, ipv4 from devices where msg search 'Error 102';

선택적 삭제 지원

로그성 머신 데이터의 경우에는 삽입 이후에 삭제 연산이 거의 발생하지 않는 것이 현실이다.

그러나 embedded 장비의 경우에는 저장 공간의 제약이 분명히 존재할 뿐만 아니라, 사용자에 의해 주의 깊게 관리

되지 않는 것이 그 특징이다.

Copyrightc 2014 InfiniFlux All Rights Reserved.InfiniFlux의 기술 구성 | 11

이 경우 혹시나 머신 데이터에 의해 Disk full이 발생하거나 장애가 발생하는 것은 기업 입장에서 많은 손해를 감수해

야만 한다.

InfiniFlux는 이런 환경에서 주어진 특정 조건에 레코드를 삭제할 수 있도록 기능을 제공한다.

따라서 embedded 개발사는 CRON 혹은 주기적인 프로그램을 통해서 InfiniFlux가 일정 크기 이상의 데이터를 유지

하지 않도록 손쉽게 관리할 수 있다.

사용 예1) 가장 오래된 마지막 100건을 삭제하라.

delete from devices oldest 100 rows;

사용 예2) 최근 1000건을 제외하고 모두 삭제하라.

delete from devices except 1000 rows;

사용 예3) 지금부터 하루치를 남기고 모두 삭제하라.

delete from devices except 1 day;

사용 예4) 2014년 6월 1일 이전의 데이터를 모두 삭제하라.

...

Support for Various Table Structures


Machbase provides four table types for users according to one's usage. (Tag, Log, Volatile, Lookup)

This is because client requirements for storing sensor data are very diverse and any one business does not have just one specific data pattern.
Therefore, it's important to understand these business requirements and select the appropriate tables for them.
The table below shows the characteristics of each table.


UI Text Box

Index


Table of Contents
maxLevel1
indent30px
exclude목차
classtoc



Table Type

Tag TableLog TableVolatile TableLookup Table

PURPOSE

Optimized for processing sensor time series data in the form of <sensor name, time, sensor value>

Optimized for processing PLC log time series data

(text included) 

Real-time processing of volatile memory data

Manages master data that can be stored permanently

DESCRIPTION

Used when storing sensor data at high speed, extracting corresponding data at high speed, or creating statistical tables in real-time

Mainly stores real-time sensor data

Used when storing log data including text and analyzing it in the form of general DBMS

Mainly stores historical user data

Used when Insert, Delete, Update, Select is required for memory-based performance (tens of thousands per second)

All data is lost when the system is shut down.

Mainly used for key-value based monitoring.

Used to permanently store user-editable master data.

SELECT has high-speed performance,

but INSERT, UPDATE, and DELETE provide disk-based performance.

TABLE STRUCTURE

<Sensor name, time, sensor value> is the  basic type, with the ability for assigning additional columns.

Any schema possible

Any schema possible (Primary Key can be assigned)

INSERT (INPUT) PERFORMANCE

Millions per second

Millions per second

Tens of Thousands per second

Hundreds per second

SELECT

Sensor Name + Limited Time Range

All inquiries possible

DELETE

Real time deletion of data before an arbitrary point

Real time deletion of arbitrary point / interval data

Primary Key Record Delete Support (※ Primary Key Designation Required)

UPDATE

Not supported (※ Only Metadata column is editable)

Not supported

Primary Key Update Support (※ Primary Key Designation Required)

STORAGE SIZE LIMITS


Disk limit

Memory limit

INDEX STRUCTURE

Three-step partitioning real-time index (※ default creation)

LSM index

Red / Black memory index

STREAM SUPPORT

arget only (save target)

Both source / target (read and save target)

Not possible

CONSIDERATIONS

Consider enough storage to erase historical data

Consider as temporary storage for Tag input

Consider memory limit


Hardware Support for Various Sizes


Machbase provides various product editions according to user environments as listed below.

Edge Edition

This product runs on small Edge devices running on ARM or Intel ATOM CPUS.

However, even in such small devices, Machbase can be useful for storing and filtering tens of thousands of sensor data per second.
It is mainly required for storing various sensor data at the terminal stage of robots and factory production lines, buildings, etc. at high speed and high capacity.

Fog  Edition

This product is used to achieve high-speed data processing on a single server.

It runs on Windows or Linux operating systems based on Intel x86 CPU and provides very fast sensor data storage and analysis that other DBMSs can not provide.
In most cases, it is used to store real-time data input from hundreds or more of edge devices and to perform secondary analysis.

Cluster  Edition

This product was developed for the purpose of storing large-scale sensor data for large manufacturing plants.

A number of physical servers operate in clusters to store more than 10 million data per second in semiconductor or display, power generation, and steel production processes.
It is used in an increasingly data-rich environment where data capacity needs to be continuously maintained.


Tag Analyzer: Data Visualization Solution Support


Machbase provides real-time visualization of hundreds of millions of sensor data stored in Machbase (since Version 5).

In other words, an arbitrary tag ID is designated, and the trend chart for the period in which the ID is input can be instantaneously checked on the web-based basis.
In addition, it provides not only simple tag data but also a statistical chart during that period, so statistical analysis is possible beyond simple visualization.

Image Added

Write Once, Read Many


Sensor data is rarely edited or deleted once it is entered into the database.

Therefore, Machbase is designed so that once the key time series data is inputted to maximize the characteristics of the machine data, an UPDATE can not occur.
Once the log data has been entered, it cannot be altered or deleted by malicious users, so there should be no concerns.


Lock-free Architecture Support


The most important aspect in sensor data processing is that data input, update, delete operation and read operation should be processed as independent as possible without conflicts.

Because of this, Machbase is designed not to allocate any locks for the SELECT operation, and it is designed with a high performance structure that never conflicts with the operation of input or deletion changes.
Therefore, even when hundreds of thousands of data are entered and some of them are deleted in real time, the SELECT operation can speed up statistical operations on millions of records.


High Speed Data Storage


Machbase provides data storage performance that is exponentially faster than conventional databases. Even if there are many indexes in a specific table, data can be received from at least 300,000 to at most 10 million per second.

This is possible because Machbase is designed to optimize time series data.


STREAM Function Support


Starting from Machbase Version 5, Edge and Fog Editions provide STREAM functionality to support real-time data filtering.

This STREAM performs a condition evaluation on real-time data input in DBMS at high speed and transmits the result to an arbitrary table.
This function is very useful for generating a warning when the value of a certain sensor exceeds a specific range or real time evaluation of internally input data is needed.


Configuring Real-Time Index


Machbase innovatively improves on conventional database structure (where the more indexes you have the slower your data insert performance is) and can build indexes in near real-time, even with hundreds of thousands of data inserts per second.

This feature is a key technology for analyzing time series data, such as machine data, because it provides a powerful functional foundation for instant retrieval of actual data as it occurs.


Real-Time Data Compression


The characteristic of time series data such as machine data is that data is generated constantly. This inevitably means that not only will the storage space of the database becomes eventually inadequate, but it will not have enough data to process.

In particular, although conventional databases input data at a high speed, as the number of indexes increases, the occupied data space also greatly increases. Therefore, conventional databases are quite unsuitable for storing and analyzing machine data.
Machbase uses two innovative real-time compression techniques to compress and store up to a hundred times more data without any setbacks in performance.

Logical Real-Time Data Compression Technology Support

First, Machbase supports logical real-time data compression technology.

This is based on the data redundancy of the machine data derived from a column-type database. It is an innovative technique to reduce the data storage space by coding redundant data as the number of data having the same value increases, which allows high redundancy data to be compressed hundreds of times the original amount.

Physical Data Compression Technology (Patented Technology)

The second is Machbase's patented physical data compression technology.

This is a technology that reduces the amount of physical data to be stored by dividing a physical data block to be stored in a disk into a predetermined size partition, compressing it into a disk separately, and further reducing the I/O cost caused by the system. This helps to increase the efficiency of the storage space by compressing the actual logically compressed data once more.


Outstanding Query Performance


The innovative and technological superiority of Machbase is that the search and statistical analysis of millions or tens of millions of previously stored historical data is very fast, even with the simultaneous input of hundreds of thousands of data per second.

This is possible because of Machbase's own indexing technology that provides superior performance for both insertion and analysis, and will play a key role in real-time business decision making.
Unlike conventional databases, Machbase can process two or more indexes in a single query, which can be expected to perform several times faster when processing data in parallel.
The following is an example of using two or more indexes in a single query.

Code Block
languagesql
SELECT * FROM table1 WHERE c1 = 1 and c2 = 2;


Time Series Data Characteristics SQL Syntax Support


In the case of sensor data, the newest data is several times more valuable than the older data, and also the "access frequency" of the latest data is characterized as being several times more compared to old data.

For this reason, Machbase supports time series data features through two types of tables: Tag and Log.

Log Table

The log table supported by Machbase has the following features.

First, it automatically saves input time

Whenever a record is stored in the database, a timestamp in nanoseconds is stored as a field called _arrival_time.
This means that all records stored by Machbase can be searched for or given condition on a time basis.


Second, it prioritizes lookup of recent data

When retrieving data, the latest time is output before the old time. That is, when SELECT is performed, the latest data is output first.
The result is the descending sort based on the _arrival_time column mentioned earlier.


Third, the DURATION keyword

The DURATION keyword is provided to enable quick lookup of specific time range data based on input time.
In the case of machine data analysis, these characteristics are provided at the SQL level because they often specify a specific time range.
This makes it easy to analyze data without stating "where" clause to complex time operators.

Code Block
languagesql
-- Example 1) View data statistics from 10 minutes ago
SELECT SUM(traffic) FROM t1 DURATION 10 MINUTE;

-- Example 2) View data statistics for 30 minutes from 1 hour ago
SELECT SUM(traffic) FROM t1 DURATION 30 MINUTE BEFORE 1 HOUR;


Tag Table

The tag table that is supported from Machbase 5.0 has the following features.

First, high-speed TAGID / time condition search performance

The tag table is excellent at any time and any ID based search performance.
It boasts ultra-fast data extraction performance that can not be achieved with existing RDBMSs, ensuring the same speed even when billions of sensor data are stored.

Second, the high-speed tag data input

The tag table supports high-speed data input.
As in the previous log table, data can be input without difficulty even with the input of hundreds of thousands of sensor data per second.

Third, real-time statistics function

The tag table supports real-time statistics function.
Machbase automatically generates five types of statistics in real time for the data stored in this tag table and provides a function to access them in real time.


Supports Text Search Function


One of the most important practical uses for users to store and use logarithmic time series data is to determine if a specific event occurred at a particular point in time.

Time-series data processing is possible at a specific point in time, but in most cases the occurrence of a specific event requires searching for a specific "word" in a text field stored in a particular column.
However, in a traditional database, in order to search for a word in a specific field, the exact match or LIKE clause is used to check the condition of some initial character through B + Tree. In most cases, this results in a very slow response.
That's why searching for a particular word in a conventional database is very weak and frustrating.
On the other hand, with Machbase, the SEARCH keyword based on the log table is provided to enable real-time word search.
This makes it possible to quickly search for any error text generated from the equipment.

Code Block
languagesql
-- Example 1) Output record containing Error or 102 in msg field
SELECT id, ipv4 FROM devices WHERE msg SEARCH 'Error' or msg SEARCH '102';

-- Example 2) Output record containing Error and 102 in msg field
SELECT id, ipv4 FROM devices WHERE msg SEARCH 'Error 102';


Optional Deletion Support


In the case of sensor data, it is true that deletion operations are rarely generated after insertion.

However, with embedded devices, there is a limited storage space that is not carefully managed by users.
In this case, if a 'disk full' occurs or a failure occurs due to machine data, the company could suffer a lot of damage.
Machbase provides the ability to delete records for a given condition in this environment.
Therefore, embedded developers can use CRON or periodic programs to easily manage Machbase to not keep data over a certain size.

For Log Tables

The following commands are supported:

Code Block
languagesql
-- Example 1) Delete oldest last 100.
DELETE FROM devices OLDEST 100 ROWS;

-- Example 2) Delete all but 1000 most recent.
DELETE FROM devices EXCEPT 1000 ROWS;

-- Example 3) Delete all of them from now on except one day.
DELETE FROM devices EXCEPT 1 DAY;

-- Example 4) Delete all data from before June 1, 2014.
DELETE FROM devices BEFORE TO_DATE('2014-06-01', 'YYYY-MM-DD');

자동화된 데이터 수집

InfiniFlux는 산재해 있는 머신 데이터 로그 파일로부터 데이터를 읽어 자동으로 전송해주는 기능인 "컬렉터" 기능을

제공한다.

이를 통해 syslog나 웹서버 로그 등의 이미 정형화된 데이터를 수집할 수 있을 뿐만 아니라 사용자가 임의로 정의한

로그 포맷의 경우에도 매우 쉽게 변환하여 자동으로 수집할 수 있는 기능을 제공한다.

2.2 InfiniFlux의 기술 구성

InfiniFlux는 위의 그림과 같은 3개의 기술 요소를 혁신적으로 조합한 초고속 시계열 데이터베이스이다.12 | InfiniFlux 특징

컬럼형 데이터베이스 기술

컬럼형 데이터베이스는 아래의 그림과 같이 레코드를 구성하는 컬럼 데이터가 물리적으로 모여 있는 특성을 가지는

OLAP(Online Analytical Processing)에 최적화된 데이터베이스이다.

컬럼 단위로 저장을 하기 때문에 컬럼의 값들을 서로 연속된 디스크 혹은 메모리 공간에 위치하며, 서로 다른 레코드

의 컬럼이라고 하더라도 시스템에 별도의 큰 부하를 발생시키지 않고 검색이 가능한 장점이 있다.

또한 이 구조에서는 데이터 분석 성능이 Row 기반에 비해 수십 배 빠르며 데이터의 압축도 용이하다.

이런 구조를 가지고 있기에 대량의 데이터를 분석하는 용도로 이 기술이 활용되며 InfiniFlux에서도 컬럼 구조로 레코

Copyrightc 2014 InfiniFlux All Rights Reserved.InfiniFlux의 기술 구성 | 13

드를 저장한다.

그러나, 전통적인 컬럼형 DBMS에서는 분석 성능을 최고로 올리기 위한 목적으로 사용하기 때문에 데이터이 실시간

입력 및 로딩에서는 매우 취약하여 시계열 데이터를 실시간으로 분석하기 위한 용도로서는 적절하지 않다.

메모리 데이터베이스 기술

메모리 데이터베이스는 초고속으로 데이터를 입력하고, 이를 다시 검색하는 OLTP(Online Transaction processing)

에 최적화된 고성능 데이터베이스이다.

이 메모리 데이터베이스는 금융, 통신, 제조 등의 실시간 데이터를 처리하는 곳에서 두각을 나타내고 있으며, 전세계

적으로 빠르게 성장하고 있는 분야이기도 하다.

그러나, 메모리 데이터베이스는 그 동작 특성상 모든 데이터가 메모리에 상주해야 하는 제약사항이 있기 때문에 데이

터가 무한히 발생하는 로그성 머신 데이터 처리에는 적합하지 않으며, Row 기반의 경우 데이터의 압축과 관리에도

상당한 제약사항이 존재한다.

InfiniFlux는 최근에 발생한 로그성 머신 데이터를 메모리에 적재하는 기술을 채택하여, 고성능의 데이터 처리를 가능

하게 하였다. 또한 일정 시간이 지났을 경우 해당 데이터를 디스크 기반으로 처리하도록 하여 실제 데이터의 중요도에

따라 유연하게 데이터를 관리할 수 있는 혁신적인 아키텍쳐를 제공한다.

InfiniFlux는 해당 메모리 구조를 "메모리 윈도우"라고 지칭하고 메모리 윈도우의 크기는 테이블 생성시 지정되는 프

로퍼티에 의해 결정된다.14 | InfiniFlux 특징

실시간 인덱스 기술

InfiniFlux 실시간 인덱스를 가능케 하는 기술을 보유하고 있으며, 이 기술이 전통적인 데이터베이스 기술과 하모니를

이루어 혁신적인 시계열 데이터베이스를 탄생시켰다.

전통 데이터베이스에서 일반적으로 활용하는 B+ Tree는 대량의 데이터를 실시간으로 처리해야 하는 인덱스로는 적

합하지 않는데, 그 이유는 다음과 같다.

첫째, 인덱스 갱신 성능 때문이다. B+ Tree에 데이터를 입력하기 위해서는 인덱스에 존재하는 키들을 정렬해야 하며,

자신의 위치를 찾아야 하기에 인덱스를 전체적으로 방문해야 하는 비용이 발생한다. 이 비용으로 인해 실시간으로 수

십만 건의 데이터를 입력해야 하는 요구사항에 미치지 못하는 근본적인 한계를 가지고 있다.

둘째, 인덱스 데이터의 크기 문제이다. B+ Tree는 성능을 향상시키기 위해 인덱스 내부에 해당 키의 값을 유지하고

있다. 따라서 원시 데이터의 건수가 많으면 많을수록 부가되는 인덱스의 크기도 비례해서 커지며, 인덱스의 숫자가 증

가할 수록 데이터 량은 기하급수적으로 증가한다.

이와 같이 전통적인 데이터베이스의 인덱스 구조는 실시간 시계열 데이터처리에 많은 어려움과 제약사항을 가지고

있으며, InfiniFlux는 다음과 같은 인덱스 기술을 통해 실시간 요구사항을 만족시킨다.

실시간 비트맵 인덱스

비트맵 인덱스라 함은 데이터베이스 내부에 위치하는 레코드 혹은 컬럼의 값을 트리 형태로 구성하는 것이 아니라, 0

과 1로 구성된 유일한 비트열로 저장하여 데이터를 관리하는 기술을 말한다.

아래의 그림과 같이 Data Values에 저장된 데이터 값은 우측의 b0~b5로 구성된 비트열로 조합되며, 같은 Data Val

ues는 동일한 비트열 값을 갖는 구조로 저장된다.

이러한 비트맵 인덱스를 다음과 같은 장점을 가진다.

Copyrightc 2014 InfiniFlux All Rights Reserved.InfiniFlux의 기술 구성 | 15

첫째, 데이터 입력 속도가 매우 빠르다. 이 특성은 InfiniFlux의 실시간 처리 성능과 밀접한 관계가 있다. 이렇게 빠른

이유는 데이터의 입력시 재구성되는 비트맵 인덱스의 끝부분만 갱신을 하면 되기 때문이다.

둘째, 인덱스 자체가 키 값을 갖지 않는다. 이 키값을 갖지 않음으로 인해 인덱스가 차지하는 공간이 매우 효율적으로

최적화 될 수 있으며, 압축 효율에도 큰 영향을 미친다.

셋째, 인덱스와 인덱스 간의 협동성이 매우 좋다. 전통적인 데이터베이스는 질의처리자에 의해서 선택되는 인덱스가

최종적으로 한 개로 한정된다. 다른 컬럼에 효율적인 인덱스가 여러 개 존재하더라도 동시에 사용할 수 없는 한계가

분명히 존재하는 것이다. 그러나 비트맵 인덱스를 사용하는 시스템에서는 컬럼마다 선택된 인덱스를 개별적으로 활

용할 수 있을 뿐만 아니라, 그 결과로 추출된 비트맵 결과 집합을 AND 혹은 OR 연산을 통해 매우 빠르게 연산할 수

있는 특성을 가지고 있다. 특히 하나의 질의에 포함되는 다수의 인덱스를 활용할 수 있기 때문에 병렬 처리가 가능한

구조이며 결과적으로 대규모 통계 처리에 있어서도 전통적인 데이터베이스에 비해 우수한 성능을 기대할 수 있다.

넷째, 공간 효율성이다. 비트맵으로 구성된 인덱스 데이터는 다양한 압축 알고리즘이 적용될 수 있도록 용이한 구조를

가지고 있기 때문에 빠르고, 높은 효율로 데이터를 관리할 수 있다.

실시간 텍스트 인덱스

InfiniFlux는 키워드 인덱스라는 이름으로 실시간 검색 기능을 제공한다.

이 인덱스는 검색 엔진에서 사용되는 역인덱스(inverted index)를 제공하는 것으로서 데이터베이스 내부에 저장된

텍스트 데이터에서 특정 패턴을 찾는데 탁월한 성능을 제공한다.

텍스트 기반 로그 데이터의 경우 특정한 에러 메시지나 메시지 패턴을 찾는 경우가 주된 업무이기 때문에 검색 기능은

필수적이라고 할 수 있다.

특히 InfiniFlux는 UTF8을 기준으로 특정 패턴을 검색하는데 탁월한 성능을 보유하고 있기 때문에 데이터베이스의 편

리한 기능 위에 강력한 검색까지 가능한 유일한 데이터베이스이다.16 | InfiniFlux 특징

2.3

기본 구조

위그림은 실제 InfiniFlux의 서비스 구조를 나타낸다.

InfiniFlux Server는 다중 쓰레드 구조의 단일 프로세스로 서비스를 수행하며 저장장치에 다수의 파일 구성된 파티션

들(Shard)을 유지하고 있다.

클라이언트는 사용자 SDK를 이용하여 작성되며 데이터를 입력하는 클라이언트의 경우 사용자 로그를 파싱하고 이를

레코드 형태로 데이터를 입력하거나 데이터를 분석하고, 추출하는 작업을 하게 된다.

InfiniFlux WebServer는 InfiniFlux Server 에 부가적으로 설치되는 웹서버 및 웹 어플리케이션으로서 RESTful API

를 통해서 사용자 응용 프로그램을 개발하고, 모니터링 할 수 있도록 제공된다.

기본적으로 InfiniFlux는 클라이언트/서버 구조로 동작을 하게 되며 InfiniFlux Server는 별도의 서버로 분리하기를

추천한다.

For Tag Tables

The following command is supported:

Code Block
languagesql
-- Delete all data from before June 15, 2016.
DELETE FROM tag BEFORE TO_DATE('2016-06-15', 'YYYY-MM-DD');

Automated Data Collection


Machbase provides a "Collector" function that reads data from scattered machine data log files and automatically transfers them.

It not only collects pre-formatted data such as syslog and web server logs, but also provides a function that can be easily converted and automatically collected even if the log format is arbitrarily defined by the user.