M1 Mac 에 SingleStore 설치

Jongsoo Noh·2022년 9월 18일
1

SingleStore

목록 보기
2/20
post-thumbnail

소개

SingleStoreDB 는 집계(Aggregation) 및 필터링(Filtering) 성능을 높이기 위해 Intel 의 SSE4.2 및 AVX2 명령어세트를 이용해 SIMD(Single Instruction Multiple Data) 를 구현하고 있습니다.

Apple Silicon 이 탑재된 M1/M2 계열 Mac 은 Intel 이 아닌 ARM Processor 계열이기 때문에 AVX2 등의 명령어세트가 지원되지 않아 SingleStore 를 M1 Mac 에서는 설치하여 사용해 보지 못했었습니다.

M1 Mac 을 사용하는 많은 개발자들의 요청이 빈번하자 SingleStore 버전 7.8.11 부터 SIMD 와 같은 여러 최적화 기법을 다수 희생해서라도 Docker Desktop 에 Cluster-In-a-Box 형태로 설치할 수 있게 되었습니다. 따라서 성능은 Intel 기반 시스템보다 다소 떨어지지만 SingleStore 의 기능 테스트 용도로써는 충분히 사용할 수 있습니다.

Docker Desktop : 4.11.1 이상
SingleStore : 7.8.11 이상

Free License Key

SingleStoreDB 를 설치하기 위해서는 License Key 가 필요합니다. SingleStore Cloud 에 가입하면 총 32 core, 128GB Memory 까지 무료로 사용할 수 있는 Licence Key를 받을 수 있습니다.

https://www.singlestore.com/cloud-trial/

License Key 와는 별도로 $500 에 해당하는 Credit 도 제공되므로 해당 Credit 이 소진될 때까지 AWS, Azure, GCP 등의 Cloud 환경에서 SingleStore 를 무료로 사용할 수도 있습니다.

가입 후 SingleStore Portal 에 로그인 하면 On-Prem Licenses 에서 Free License Key 를 확인할 수 있습니다.

Docker Desktop 설치

Docker.com 에서 Apple Chip 용으로 4.11.1 이상을 설치하고 실행합니다.

SingleStore 설치

터미널을 열고 docker 에서 SingleStore 를 설치합니다.

  • License Key 는 위에서 확인한 Key 를 제공합니다.
  • 3306 port 는 MySQL 과 같이 client 에서 접속할 때 사용됩니다.
  • 8080 port 는 SingleStudio Studio 라는 GUI 모니터링 및 SQL Editor 가 사용합니다.
docker run -i --init \
    --name singlestore-ciab \
    -e LICENSE_KEY=<LICENCE_KEY> \
    -e ROOT_PASSWORD=1234 \
    -p 3306:3306 -p 8080:8080 \
    singlestore/cluster-in-a-box

설치가 모두 완료되면 SingleStore Cluster 를 다음과 같이 시작/정지/삭제 할 수 있습니다.

docker start (CONTAINER_NAME)
docker stop (CONTAINER_NAME)
docker rm (CONTAINER_NAME)

Docker Desktop 에서 SingleStore Container 를 확인하면 AMD64 아키텍처를 에뮬레이트하고 있어 성능이 떨어질 수 있다고 알려주고 있습니다.

SingleStore 실행

SingleStore 를 시작하고 node list 를 확인합니다.

docker start singlestore-ciab
docker exec -it singlestore-ciab sdb-admin list-nodes

Production 에서는 Node 하나가 각각 하나의 Hardware Box 에 설치하는 것이 권장되지만 Cluster-In-a-Box 는 기능테스트를 목적으로 하니 하나의 Box 에 두개의 노드를 3306, 3307 포트로 구분해서 설치되어 있습니다.

Master : Master Aggregator 역할로 Client 의 접속을 받고 SQL 을 컴파일하고 Leaf Node 로부터 전달받은 데이터를 재집계하거나 Client 로 반환하는 역할을 합니다.

Leaf : ColumnStore 파일, RowStore 테이블의 스냅샷 및 로그 등을 파티션(Partition) 단위로 분할하여 저장하고, 실제 분산 Query 를 수행하여 결과를 Aggregator 로 전달하는 역할을 합니다.

SingleStore SQL 실행

SQL Client 로 접속하고 Database 및 테스트 테이블을 생성하겠습니다.
그 후 10만건의 row 를 만들어 Insert 후 테이블에 저장된 row 건수를 Select 합니다.

$ docker exec -it singlestore-ciab singlestore -p
Enter password: <1234> 입력

CREATE DATABASE testdb;
USE testdb;

CREATE TABLE test_table (id BIGINT PRIMARY KEY, nm VARCHAR(20) );

INSERT INTO test_table
SELECT rn, CONCAT('TEST',rn) 
  from (select row_number() over () as rn 
          from table(create_array(100000):>array(bigint))
       );
SELECT count(*) FROM test_table;
SELECT partition_id(), count(*) FROM test_table GROUP BY partition_id();

분산(Distributed) DB이므로 테이블이 파티션별로 나누어져 균등하게 데이터가 저장된 것도 확인할 수 있습니다.

이제 M1 Mac 에서도 SingleStore 를 쉽게 테스트할 수 있습니다.

profile
Database Guy

0개의 댓글