본문 바로가기
SingleStoreDB/엔지니어링

SingleStore DB 7.1

by 에이플랫폼 [Team SingleStore Korea] 2021. 10. 18.

SingleStore DB 7.1을 즉시 다운로드할 수 있으며, 전 세계 퍼블릭 클라우드의 SingleStore Managed Service 에서도 SingleStore DB 7.1을 사용할 수 있습니다.


SingleStore DB 7.1을 통해 SingleStore는 실시간 분석 및 강화된 트랜잭션 처리하기 위한 앞서가는 NewSQL 플랫폼으로 더욱 확고해졌습니다[참고1]. 하나의 시스템에서 탁월한 트랜잭션 및 분석 성능을 제공합니다. 또한 이 릴리스는 트랜잭션 처리, 운영 분석 등을 제공하는 미션 크리티컬 응용프로그램을 위한 향상된 복원력(resilience) 기능을 제공합니다.

https://youtu.be/vuZmbSdusXs

무한한 확장성, 고가용성(HA), 재해 복구(DR), full SQL 지원을 갖춘 SingleStore는 디지털 혁신 이니셔티브[참고2]를 위한 강력한 토대입니다. SingleStore를 사용하면 비즈니스 수행 방식을 변경하고, 속도 및 규모 제한에 대한 걱정없이 새로운 기회를 포착할 수 있습니다. 동시에 기존 기술과 SQL 에코 시스템을 유지하면서 혁신적인 새 응용프로그램을 구축할 수 있습니다.

이 블로그 게시물에서는 SingleStore DB 7.1 자체 관리 소프트웨어 및 SingleStore Managed Service의 주요 기능에 대해 자세히 설명합니다. 자세한 내용은 릴리스 정보를 참고하시기 바랍니다. SingleStore 7.1의 재해 복구(DR) 개선 사항, SingleStore Tools 개선 사항새로운 SingleStore Training 모듈에 대한 자세한 업데이트도 참고하시기 바랍니다.


SingleStore DB 7.1의 주요 기능

SingleStore 7.1은 다양한 데이터베이스 플랫폼 기능에서 점진적인 개선과 함께 다음 영역에서 특히 주목할 만한 새로운 기능을 제공합니다.

Universal Storage

SingleStore의 Universal Storage 기술은 여러 릴리스에 걸쳐 새로운 기능으로 제공되고 있습니다. 이 기술은 우수한 성능과 낮은 총소유비용(TCO)으로 SingleStore에서 실시간 분석 및 온라인 트랜잭션 처리(OLTP)를 지원하는 것이 목적입니다.

Universal Storage는 SingleStore DB 7.0[참고2]에서 시작하여 SingleStore DB 7.1에서도 계속됩니다. Universal Storage는 분석에 뛰어나고 분석 능력이 탁월하고 인덱스, 고유키, 업서트, 탐색 및 빠르고 선택성이 높은 중첩 루프 스타일 조인(nested-loop-style join)을 지원하는 등 OLTP를 향상시키는 컬럼스토어 의 확장입니다. 데이터는 압축률이 높고 RAM에 잘 맞지 않아도 되므로 Universal Storage는 뛰어난 TCO를 제공합니다. 자세한 내용은 다음의 SingleStore DB 7.1 Universal Storage 블로그[참고4]를 참고하시기 바랍니다.

복원력(Resilience)

사람들이 운영하는 응용 프로그램을 위한 데이터베이스는 장애에 대한 복원력이 있어야 합니다. SingleStore는 수년간 트랜잭션, 지속성, 고가용성(HA), 재해 복구(DR)를 지원했습니다. 우리는 이러한 기능 영역을 지속적으로 구축하고 강화하고 있습니다.

SingleStore DB 7.1에서는 빠른 DR 장애 복구(failback) 기능을 제공합니다. 우리는 차등(differential) 접근 방식을 사용하여 이전에 실패한 기본 클러스터를 다시 온라인 상태로 전환하고 다시 기본으로 만들 때 전송해야하는 데이터의 양을 줄입니다. 자세한 내용은 DR 장애 복구에 대한 블로그[참고5]를 참고하시기 바랍니다.

SingleStore의 HA는 파티션된 데이터 모델을 기반으로 각 파티션의 원본 버전과 사본을 두 개의 개별 리프 노드에 보관합니다. 여기서 SingleStore는 실제 데이터를 저장합니다. 메타 데이터는 어그리게이터 노드에 저장됩니다. (다음에서 "노드"라는 용어는 "리프 노드"를 의미합니다.)

노드가 실패하면 해당 데이터의 복제본을 다른 노드에서 즉시 사용할 수 있으며 모든 데이터에 액세스 할 수 있습니다. 이전 SingleStore DB 7.0에서는 한 노드의 모든 파티션이 다른 한 노드에 복제되었습니다. 따라서 한 노드에 장애가 발생하면 두 번째 노드는 이전보다 2배 많은 데이터를 가지고 있기 때문에, 일반적인 쿼리 처리 작업에서 경합의 대상이 되는 핫스팟(hot spot)이 될 수 있습니다. SingleStore 7.1에는 이 문제를 해결하기 위해 부하 분산 장애조치(load-balanced failover) 라는 기능이 도입되었습니다.

load-balanced failover 모드일때 노드에 장애가 발생하면 그 노드의 파티션이 하나의 노드가 아닌 다른 여러 노드로 분산됩니다. 이렇게하면 장애 발생 후 핫스팟이 생성되지 않아 성능의 저하를 막고 노드 손실로 인해 데이터를 사용할 수 없게 될 가능성이 낮아집니다.

프로그래밍 가능성

SingleStore는 스토어드 프로시저(SP) 및 사용자 정의 함수(UDF)를 포함한 내부 확장 프로그래밍을 위한 MPSQL 언어를 지원합니다. 7.1 릴리스는 특히 트랜잭션 처리 응용프로그램 개발 및 JSON 처리를 위해 이 기능을 강화하였습니다.

확장성

SingleStore로 응용프로그램을 구축하기가 그 어느 때보 다 쉬워졌습니다. 예를 들어, 특히 OLTP 응용프로그램에서 스토어드 프로시저가 단일 행을 가져오고 행의 각 열에 대한 값으로 별도의 로컬 변수를 채우는 것이 일반적입니다. 이전에는 MPSQL 언어로 가능했지만 원하는 것보다 많은 라인의 코드가 필요했습니다. 다음과 같은 구문을 사용하여 동일한 작업을 훨씬 간결하게 수행할 수 있습니다.

SELECT first_name, last_name INTO var_first, var_last
FROM employees WHERE id = 2;

또한, 동적 SQL에서도 작동합니다. 예를 들면 다음과 같습니다.

EXECUTE IMMEDIATE sql_string INTO var_first, var_last;

이 구문은 다른 데이터베이스 제품에서 사용되는 것과 유사하여 친숙하고 배우기 쉽고 다른 데이터베이스에서 SingleStore 로의 응용 프로그램 포팅을 단순화합니다.

또한, RECORD 유형의 로컬 변수 또는 매개 변수 필드에 대한 액세스가 이제 스토어드 프로시저의 SQL 문에서 지원됩니다. 커서와 같은 작업을 많이 수행하기 위한 코드가 줄어 듭니다. 예를 들면 다음과 같습니다.

create table t(a int, b int);
insert t values(1, 2),(3,4),(5,6),(7,8);
create table t2(a int, b int);

delimiter //
create or replace procedure p() as
declare q query(a int, b int) = select a, b from t where a >= 5;
begin
for r in collect(q) loop
call echo_stuff(r);
insert t2 values(r.a, r.b); -- notice use of record fields inline
end loop;
end //

create or replace procedure echo_stuff(r record(a int, b int)) as
begin
echo select r.a, r.b; -- also using record fields here
end //

delimiter ;

이 프로시저를 호출하면 다음과 같은 결과를 볼 수 있습니다.

memsql> call p();
+------+------+
| a | b |
+------+------+
| 5 | 6 |
+------+------+
1 row in set (0.25 sec)

+------+------+
| a | b |
+------+------+
| 7 | 8 |
+------+------+
1 row in set (0.26 sec)
Query OK, 0 rows affected (0.26 sec)


memsql> select * from t2;
+------+------+
| a | b |
+------+------+
| 7 | 8 |
| 5 | 6 |
+------+------+

비록 우리가 이것을 훨씬 쉽게 만들었지만, 가능한 경우 루프에서 한 번에 한 행씩 처리하는 대신 단일 SQL 문을 사용하여 집합 지향(set-oriented) 방식으로 작업을 수행하는 것이 가장 좋습니다. 더 빠르고 더 적은 코드 라인을 사용할 수 있기 때문입니다. 한 번에 하나의 레코드를 처리하지 않고 위의 스토어드 프로시저(SP)와 동일한 작업을 수행하는 방법을 생각할 수 있습니까?

관리 효율성

백업은 거의 모든 시스템 관리 및 HA / DR 프로세스의 핵심 부분입니다. SingleStore DB 7.0에는 증분 백업이 도입되어 편리하고 경우에 따라 중요합니다. 새로운 응용프로그램 변경을 롤아웃하는 등의 중요한 작업을 수행하기 전에 빠른 증분 백업을 수행할 수 있기 때문입니다. SingleStore DB 7.1은 이제 증분 백업의 대상으로 Amazon S3, Azure Blob Store 및 GCP 스토리지를 지원하여 클라우드로 증분 백업 기능을 확장합니다.

업그레이드는 시스템 관리의 큰 부분입니다. SingleStore DB 7.1은 7.0 이하의 온라인 업그레이드를 지원합니다. 따라서 다운타임 없이 최신 소프트웨어 버전으로 업그레이드할 수 있습니다.

새로운 관리 뷰인 MV_BLOCKED_QUERIES를 통해 쿼리 대기 문제를 해결하는 데 도움이되는 차단된 쿼리와 차단 이유를 볼 수 있습니다.

다른 특징들

SingleStore DB 7.1에서 사용 가능한 추가 함수(function)는 다음과 같습니다.

TABLE()

새 TABLE()함수는 배열을 인수로 사용하고 배열 요소 당 하나의 행을 갖는 행 집합을 반환하는 테이블 반환 함수입니다. FROM 쿼리 절에서 사용할 수 있습니다. 이 json_to_array()함수와 함께 사용하면 JSON 배열을 행 집합으로 분해하기 편리합니다. 예를 들면 다음과 같습니다.

create table t(id int, json_col json);
insert into t values(1, '[1,2,3]');
insert into t values(2, '[4,5]');
select * from t join table(json_to_array(t.json_col));

출력 

+------+----------+-----------+
| id | json_col | table_col |
+------+----------+-----------+
| 1 | [1,2,3] | 1 |
| 1 | [1,2,3] | 2 |
| 1 | [1,2,3] | 3 |
| 2 | [4,5] | 4 |
| 2 | [4,5] | 5 |
+------+----------+-----------+

백업 중 파티션 분할

SingleStore는 탄력성이 뛰어납니다. 온라인으로 리프 노드를 추가하고 여러 노드에서 데이터 파티션을 재조정(rebalance)할 수 있습니다. 리프 노드 당 하나의 데이터베이스 파티션을 갖게 되면 탄력성에 한계가 생겨 더 이상 세분화 할 수 없으므로 노드를 추가하고 재조정하는 것은 더 이상 효과적이지 않습니다. SingleStore DB 7.1 이전에는 데이터베이스에서 파티션 수를 늘리려면 더 많은 파티션이 있는 새 데이터베이스를 만든 다음 원래 데이터베이스에서 데이터를 복사해야 했습니다. 이것은 노동 집약적일 수 있습니다.

SingleStore DB 7.1에서는 파티션 분할 프로세스를 자동할 수 있습니다. 이는 백업을 생성할 때 파티션을 두 개로 분할 하는 새로운 버전의 backup 명령을 통해 수행됩니다. 백업을 복원할 때 동일한 테이블, 데이터 및 기타 오브젝트를 가지면서 두 배의 파티션으로 복원됩니다. 따라서 기존 방식에 비해 많은 노동력과 시간을 절약할 수 있습니다.

글로벌 임시 테이블 (Global Temporary Table)

SingleStore는 수년간 임시 테이블을 지원했습니다. 표준 임시 테이블은 해당 세션에서만 있습니다. 두 개의 다른 세션이 동일한 임시 테이블 이름을 사용할 수 있으며 두 개의 다른 테이블입니다. 반면에 SingleStore DB 7.1의 새로운 글로벌 임시 테이블은 세션간에 공유할 수 있습니다. 이들은 로그를 남기지 않는 인메모리 로우스토어 테이블이므로 I/O 영향없이 데이터 버스트를 삽입하는 데 좋습니다. 하드웨어에 따라, 특히 로깅에 일반 하드 디스크 드라이브를 사용하는 경우 새 글로벌 임시 테이블을 사용하면 버스트 삽입 속도가 3배 향상되었습니다.

물론 글로벌 임시 테이블은 로깅되지 않고 데이터는 RAM에만 존재하므로 리프 노드가 다운되면 테이블은 오류 상태가 되어 쿼리할 수 ​​없습니다. 이 경우 응용 프로그램은 테이블을 삭제하고 다시 생성해서 다시 시작해야합니다. 내결함성과 속도 간의 이 절충은 인서트 버스트의 성능을 최대화하거나 데이터 변환에 사용되는 중간 스크래치 테이블의 작업을 최대화하려는 응용 분야에 적합합니다. 내결함성이 필요한 경우는 일반 테이블을 사용해야 합니다.

Ingest

Google Cloud Storage (GCS)에 대한 수집 및 백업 지원을 확대하여 업계의 주요 클라우드 제공 업체와의 통합을 계속하고 있습니다.

GCS 버킷에서 SingleStore 파이프라인을 통한 데이터로드 지원

GCS 버킷에서 직접 데이터베이스 백업 및 복원. 이전에는 S3 인터페이스를 사용하였지만, GCS 인터페이스와 상호직접 연동하여 잠재적인 호환성 문제 제거

쿼리 최적화

7.1에서는 다음과 같은 몇 가지 쿼리 최적화 기능이 향상되었습니다.

히스토그램을 사용한 조인 카디널리티 추정

플랜 캐시에서 모든 플랜을 제거하는 명령 : 통계 캐시 변경이 원하는 효과를 갖는 신뢰할 수 있는 쿼리 컴파일 시간 테스트 및 유효성 검증

중첩된 subselect를 포함하는 부가적인 쿼리 셰이프 활성화

NOPARAM() 함수 추가 : 필터에서 리터럴의 매개 변수화 방지

NOPARAM()은 매개 변수에 민감한 플랜에 도움을 줄 수 있습니다(예 : 광범위한 날짜와 비교하여 좁은 날짜 범위에서 실행될 때 다른 플랜이 필요한 쿼리가 있는 경우). NOPARAM() 매개 변수에 매우 민감한 경우 새 매개 변수 값에 대한 새 플랜을 쿼리가 다시 컴파일하도록 강제하는 데 사용할 수도 있습니다. 이렇게하면 새 매개 변수로 쿼리를 실행할 때마다 쿼리를 컴파일하는 데 더 많은 시간을 소비하면서 이러한 매개 변수에 대해 항상 좋은 플랜을 얻을 수 있습니다.

업계 표준 내장 함수

우리는 개발 프로세스를 용이하게 하고 다음과 같은 다른 도구로 부터 마이그레이션을 용이하게 하기 위해 많은 표준 내장 함수를 도입했습니다.

TRUNC() – 날짜를 지정된 단위로 자르거나 숫자를 지정된 정밀도로 자름

TO_NUMBER() – 문자열 또는 표현식을 숫자 유형으로 변환, 포맷 지정 가능

REGEXP_SUBSTR() – 주어진 정규 표현식 패턴과 일치하는 부분 문자열을 리턴

https://youtu.be/IMVxl-GSWkI

보안

암호 복잡성 정책을 설정하여 암호의 길이, 영숫자 및 특수 문자 수, 암호의 시퀀스 발생 횟수 또는 반복 패턴 수를 제어할 수 있습니다. 또한 로그인 실패 횟수 와 초과시 계정이 잠기는 시간을 지정할 수 있습니다. 이 기능은 시스템이 암호 공격으로부터 보호되도록하기 위한 것입니다.

이러한 새로운 기능을 사용하면 타사 도구나 응용 프로그램에 의존하지 않고 조직의 암호 정책을 SingleStore에서 직접 구현할 수 있습니다. 이는 개발자에게 편리할 수 ​​있으며 추가 소프트웨어를 구매하지 않아도 비용을 절감하고 복잡성을 줄일 수 있습니다.

결론

SingleStore DB 7.1 릴리스는 다음을 포함하여 SingleStore의 기록 시스템(SoR) 응용 프로그램을 지원하는 기능이 크게 향상되었습니다.

Universal Storage (컬럼스토어의 고유키, 컬럼스토어의 빠른 선택적 조인)

DR 장애 복구

트랜잭션 응용프로그램을 위한 더 쉬운 스토어드 프로시저 프로그래밍

응용프로그램 개발 및 마이그레이션을 용이하게 하는 유용한 새로운 내장 함수

그리고 기타 등등.

SQL 교육을 받은 개발자가 쉽게 배우고 사용할 수 있는 무제한의 확장성과 성능을 갖춘 데이터 플랫폼을 찾고 있습니까? SingleStore Managed Service나 즉시 다운로드할 수 있는 SingleStore DB 7.1 이상을 사용해 보십시오.


참고

참고1: Adam Ronthal, There is Only One DBMS Market!,

https://blogs.gartner.com/adam-ronthal/2019/07/17/one-dbms-market/, Gartner, 2019.

 

There is Only One DBMS Market! - Adam Ronthal

On 16-July-2019, Gartner published new research titled “There is Only One DBMS Market”, by Adam Ronthal, Donald Feinberg and Merv Adrian.  This follows closely on last month’s declaration that “The Future of the DBMS Market Is Cloud” by the same

blogs.gartner.com

참고2: What is Digital Transformation? The Enterprisers Project,

https://enterprisersproject.com/what-is-digital-transformation, 2020.

 

What is digital transformation?

Digital transformation is the integration of digital technology into all areas of a business, fundamentally changing how you operate and deliver value to customers. It's also a cultural change that requires organizations to continually challenge the st

enterprisersproject.com

참고3: SingleStore Universal Storage – And Then There Was One, September, 2019.

참고4: SingleStore Universal Storage, Episode 2, <link-TK>, April, 2020.

참고5: Yu-wang Wang, DR Failback in SingleStore DB 7.1,

https://www.singlestore.com/blog/fast-disaster-recovery-failback-memsql-7-1, May, 2020.

 

Fast Disaster Recovery Failback with SingleStore DB 7.1

SingleStore DB 7.1 features fast failback when you're engaged in disaster recovery - fast DR failback. We accomplish this by only copying recently changed data.

www.singlestore.com

 

​May 28th, 2020

 

Eric Hanson


 

 

​www.a-platform.biz | info@a-platform.biz

 

 

#release#universal_storage