-
케이뱅크 - 금융정보제공(FID)시스템 SingleStoreDB 도입 사례
케이뱅크에서 운영 중인 금융정보제공(FID)시스템에서 사용되는 DBMS가 SingleStoreDB로 전환되어 그 과정을 공유한 글이 있어 소개드립니다.* DBMS 전환 배경- FID시스템의 Data 양이 기하급수적으로 늘어나면서 동일한 SQL 명령어를 수행하더라도 절대적인 Data Scan양이 증가하여 성능저하 발생- SQL Tuning, Index 추가, Scale-Up 등 다방면으로 개선해 봤지만 전통적인 RDBMS의 구조적인 한계가 있었고 날이 갈수록 늘어나는 Data의 양으로 인한 스토리지 비용증가* SingleStoreDB PoC 결과# 빠른 집계-Slow Query(단위 : 초)작업 유형MySQL(5.7.x)SingleStore(8.5.x)퍼포먼스 비교A Query30만 건 이상7개 테이블..
2024.10.10
-
타임게이트, 한국은행과 ‘데이터 레이크 구축사업’ 체결에 SingleStoreDB 도입 결정
타임게이트, 한국은행과 ‘데이터 레이크 구축사업’ 체결 실시간 데이터 처리 위해 싱글스토어DB 도입 결정 “싱글스토어DB 표준SQL 기반 모든 워크로드 처리” 관련 기사입니다. 테크데일리 https://lnkd.in/gfVu8bUX 전자신문 https://lnkd.in/gPUz29sD
2024.02.06
-
Row Generation 튜닝#1 - SingleStore
※ 테스트 장비 사양 - 8vCPU, 16GB 이전 포스트에서 SingleStore 의 Row Generation 은 7억건에서 메모리 부족 에러가 발생했습니다. 그 이유는 create_array 및 table 로 변환한 모든 row 를 대상으로 row_number() 함수로 정렬을 수행하기 때문에 부가적인 메모리가 더 필요하기 때문입니다. 물론 정렬 작업 때문에 시간도 조금 더 필요합니다. create or replace function gen_rows(n bigint) returns table as return select row_number() over () as rn from table(create_array(n):>array(bigint)); 이제 정렬이 필요없도록 튜닝을 해보겠습니다. 먼저..
2024.01.18
-
Row Generation 성능 비교 - SingleStore, Oracle, MySQL, PostgreSQL
🎯 개요 이전 포스트에서 Row Generation 방법을 소개해 드렸습니다. 2024.01.04 - [연구노트] - Row Generation - SingleStore, Oracle, MySQL PostgreSQL 이번 포스트에서는 각 DB 마다 Row Generation 성능을 간단하게 비교하도록 하겠습니다. 비교 테스트에 사용한 장비는 8vCPU, 16GB 의 사양으로 Hands-On 테스트에 사용했던 장비를 그대로 사용하였고 여기에 Oracle XE 21c 를 추가로 설치했습니다. 🎯 Oracle Oracle XE 21c는 SGA+PGA 합쳐서 2GB 를 넘지 못하도록 제약이 걸려 있습니다. 따라서 불가피하게 PGA가 3000MB 로 설정되어 있는 Autonomous Database 에서..
2024.01.12
-
Row Generation - SingleStore, Oracle, MySQL PostgreSQL
🎯 Row Generation 이번 포스트에서는 임의의 n개 row 를 생성하는 방법을 알아 보겠습니다. 🎯 Oracle Oracle 에서는 Hierarchical Query 를 이용해서 임의의 row 를 생성합니다. SQL> select rownum from dual connect by level select * from table([1,2,3]); +-----------+ | table_col | +-----------+ | 1 | | 2 | | 3 | +-----------+ 3 rows in set (0.00 sec) 만일 많은 row 를 생성해야 한다면 다음과 같이 create_array 함수를 이용합니다. singlestore> select * from table(create_array..
2024.01.04
-
SingleStore Hands-On #6 Unlimited Storage Database
🎯 개요 SingleStore 는 데이터베이스를 생성할 때 Local Database 또는 Unlimited Storage Database(USD) 를 선택할 수 있습니다. ▶ Local : SingleStore 클러스터가 설치된 장비 ▶ Unlimited Storage : SingleStore 클러스터 외부의 Object Storage 이번 테스트에서는 Unlimited Storage 의 개념 파악 및 기능 테스트를 수행해 보도록 하겠습니다. 🎯 Unlimited Storage Unlimited Storage 를 선택하면 데이터베이스의 크기에 제한이 없어집니다. 그래서 Bottomless 데이터베이스라고 불리기도 합니다. Unlimited Storage Database 를 생성하면 실제 데이터는 지..
2023.12.28
-
SingleStore Hands-On #5 Online Scale Out/In
🎯 개요 SingleStore 는 분산(Distributed) 데이터베이스로 Shared Nothing 구조를 가지고 있습니다. 따라서 현재 시스템보다 더 높은 성능이 요구될 때 쉽게 수평 확장(Scale Out)할 수 있는 것이 큰 장점입니다. 이번 테스트에서는 k6 성능테스트 툴로 Data API 를 이용해 트랜잭션이 실행되는 도중에 온라인으로 수평 확장(Scale Out) 및 축소(Scale In) 작업을 수행하도록 하겠습니다. 실제 SingleStore 입장에서는 Leaf Node 를 추가/삭제하는 작업을 수행합니다. 🎯 gnuplot 설치 SingleStore 클러스터가 온라인 상태에서 Leaf 노드를 추가/삭제할 동안 성능의 변화를 파악하기 위해 k6 실행 결과를 csv 로 로깅할 ..
2023.12.21
-
Real-Time Data Platforms: SingleStore vs Databricks
SingleStore와 Databricks는 모두 고객들이 직면한 중요한 과제를 해결할 수 있는 훌륭한 데이터 플랫폼입니다. 그러나 Databricks와 달리 SingleStore는 처음부터 성능을 최우선으로 고려하여 설계되었고, 이는 곧 비용 절감에 여러 이점을 가져왔습니다. 이번 글은 이러한 차이점을 살펴볼 여러 시리즈 중 첫 번째 글로, SingleStore가 뛰어난 영역인 실시간 분석 및 운영에 관한 주제로 시작하겠습니다. 또한, SingleStore은 실시간이 아닌 일괄 ETL 작업에서도 비용과 성능 면에서 이점이 있음을 확인했으며, 이어진 글에서 설명드리도록 하겠습니다. Understanding the value of real-time data 먼저, 실시간 데이터의 중요성을 알아보겠습니다. ..
2023.12.07
-
SingleStore Hands-On #4 Data API
🎯 개요 RDBMS 를 사용하는 고전적인 프로그래밍 방식은 프로그램 실행 초기에 커넥션(connection) 을 열고 특정 SQL 을 처리하기 위한 커서(cursor) 를 생성한 다음 커서의 실행 결과를 페치(fetch) 하여 처리하고 커넥션을 닫는 순서로 작성되곤 했습니다. 문제는 커넥션을 맺거나 끊는 작업이 DBMS 입장에서는 상당히 무겁고 큰 비용이 발생하는 작업이라는 것입니다. 그래서 보통 일정 갯수이상의 커넥션을 미들웨어나 WAS 등에 커넥션 풀(Connection Pool) 형태로 만들어 두고 필요할 때마다 커넥션을 열고 닫는 것이 아니라 커넥션 풀에서 커넥션을 획득/반납하게 합니다. RDBMS 와 WAS 등의 미들웨어간에는 항상 커넥션이 유지되기 때문에 커넥션 생성 및 제거에 시스템 자원..
2023.11.23
-
SingleStore Hands-On #3 동일 Query 성능 비교 - PostgreSQL, MySQL
🎯 개요 이전 포스트에서 CC By 4.0 License 를 가지고 있는 Stefan Proell, Eva Zangerle, Wolfgang Gassler 가 만든 Flughafen DB가 원본인 airportdb 를 로딩했습니다. 2023.11.10 - [연구노트] - SingleStore Hands-On #2 데이터 로딩 이제 설치한 각 데이터베이스 별로 동일한 Query 를 수행하여 성능을 비교해 보겠습니다. 각 Query 는 Parsing 및 Buffer Cache miss 등의 성능상 오버헤드를 제거하고자 두 번씩 연속으로 수행하고 두번째 수행 결과를 확인합니다. Query #1, Query #3, Query #4 는 MySQL Heatwave Quickstart Page 에서 예제로 사용하..
2023.11.17
-
SingleStore Hands-On #2 데이터 로딩
🎯 개요 데이터 로딩 테스트를 위해 MySQL Heatwave 에서 예제로 사용하는 airportdb 를 사용하겠습니다. airportdb 는 CC By 4.0 License 를 가지고 있는 Stefan Proell, Eva Zangerle, Wolfgang Gassler 가 만든 Flughafen DB가 원본입니다. 🚘 MySQL Data Loading 먼저 MySQL 에서 airportdb 를 로딩하기 위해 다음 명령어를 수행하여 airport-db.zip 파일을 다운로드하고 압축파일을 풀어 놓습니다. wget https://downloads.mysql.com/docs/airport-db.zip unzip airport-db.zip mysqlsh 의 loadDump 유틸리티를 이용하여 16 thr..
2023.11.10
-
SingleStore Hands-On #1 DB 설치 : SingleStore, PostgreSQL, MySQL
💻 Linux Machine Setup 하나의 장비에 SingleStore, PostgreSQL, MySQL 을 함께 설치할 Linux Server 를 설정합니다. 장비 사양 CPU : 8 vCPU Memory: 16GB (32GB 권장) HDD(SSD) : 70GB 이상 O/S : Red Hat 계열 version 7 (이 문서는 Oracle Linux 7 기준으로 작성되었습니다) sudo 권한 확보 현재 사용하는 계정명은 opc 입니다. 이 계정에 sudo 권한을 설정할 경우 root 계정에서 다음 명령어를 수행합니다. * 이미 sudo 권한이 부여됐다면 이 스텝은 건너 뛸 수 있습니다. # visudo -f /etc/sudoers 가장 아래 라인에 다음 추가 opc ALL=(ALL) NOPAS..
2023.11.02