PrestoDB 설치(install) 가이드 - ( MongoDB 연동 )

2021. 4. 27. 16:56it

반응형

 

 

prestoDB 로고

 

 

 

 

0. PrestoDB 란 무엇인가?

음, 쉽게 말해 쿼리엔진이다.

쿼리 엔진이기에 스토리지(저장) 기능은 제공하지 않는다.

0-1 그럼 왜 이런 서비스가 제공되는가?

sql 이 지원되지 않는 서비스에서 데이터

가공 및 조회하기 위해 사용된다.

물론 sql이 지원되는 서비스에서도 사용이 가능하다.

0-2 그럼 무슨 장점이 있어서 사용하는가?

바로 이기종 간의 데이터베이스 혹은 파일 간에

데이터 조회 및 가공이 된다.

( 이기종간 서비스에서 select, join, group by 등등 가능 )

0-3. 단점은?

단점으로는 분산 서비스들이 다 그렇듯....

설정 및 관리가 싱글 서버 대비 어렵다.

또한!! presto 자체가 다른 오픈소스 대비

레퍼런스가 좀 부족하다.

 

728x90



0-4. 믿을만한 서비스인가?

presto는 페이스북에서 개발을 하였고,

현재 운영하고 있는 서비스이다.

그러니, 의심하지 않고 사용해도 되는 서비스이다.



그럼 일단 해당 서비스는 이정도로 가볍게 알아보고,

금일 실습을 진행하겠다.

 

금일 실습은 아래와 같다.

 

 

 

 

 

 

 

Mongo SQL 구조

 

 

 

mongoDB에서 SQL을 사용하는 방법을 배워보겠다. 

 
몽고디비를 운영하면서 가장 많이 공격받는 것 중(?), 하나가 SQL 지원 안되는 점이다.

원칙적으로 맞는 말이지만,

반드시 mongodb에서 sql이 지원이 안된다는 건

틀린 말이다.

Presto랑 연동을 하면,

 

mongoDB에서도 SQL이 사용이 가능하다. 

 

하지만, 이 경우, 데이터가 스키마에 종속되게 되어

 

NoSQL의 장점 중 하나인 스키마 비종속성이 사라진다.
( 몽고디비에 저장이 안되는게 아니고, preato를 사용하는 유저에서 데이터가 다르게 보임, 기존 몽고 쿼리로는 조회가 가능 )

 

반응형

 

즉, MongoDB에서 Presto를 사용하려면, RDB 처럼 스키마를 설계해주어야 한다. 

 

안 그럼, 스키마가 맞지 않는 데이터는 조회가 되지 않는다.

 

예를 들면 아래와 같다.

 

 

몽고디비 데이터 형태

 

 

 

위 그럼 처럼 한 컬럼에 데이터 타입이 다른 경우, 

 

몽고디비는 큰 문제없이 조회와 저장이 된다. 

 

하지만 Presto는 스키마의 영향을 받아, 

 

데이터 타입이 string으로 변환 되거나, null 값이 나온다. 

 

 

 

 

Presto 조회 결과

 

 

 
그러니, Presto를 사용할 때, 데이터의 타입을

좀 신경을 써야 한다.

 

 

그럼 presto 설치에 대해 알아 보겠다.

 

따라면 하면 크게 문제 없을 것이다. 

 

 

1. 디폴트 세팅

$ java version


$ python -version

 

 

2.presto 다운받기

$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.251/presto-server-0.251.tar.gz

$
tar  -zxf  presto-server-0.251.tar.gz



 
$ mv presto-server-0.251 presto

 

 

3. presto data

$ mkdir prestodata


$ pwd
/home/ubuntu/presto/presto/prestodata ( node.properties 에 활용 )

 

 

4. client 만들기

$ cd presto


$ cd bin


$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.251/presto-cli-0.251-executable.jar

$ mv presto-cli-0.251-executable.jar presto


$ chmod +x presto

 

5. etc 만들기

$ cd ..


$ pwd

/home/ubuntu/presto/presto ( 현재 위치 )


$ mkdir etc


$ cd etc

 

 

5-1 config 설정

$ vi config.properties


coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=10GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://127.0.0.1:8080

 

 

5-2. jvm 설정

$ vi jvm.config


-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

 

 

5-3. log 설정

$ vi log.properties


com.facebook.presto=INFO

 

 

5-4 node 설정

$ vi node.properties


node.environment=production
node.id=f7c4bf3c-dbb4-4807-baae-9b7e41807bc9
node.data-dir=/home/ubuntu/presto/presto/prestodata  ( 3번 presto data 위치 적어주면 된다 ) 

 

 

6.카탈로그 설정

$ cd ..


$ pwd
/home/ubuntu/presto/presto ( 현재 위치 )


$ mkdir catalog


$ cd catalog


$ vi mongodb.properties
connector.name=mongodb
mongodb.seeds=<host>:<port>

 

 

7. presto 시작

$ cd .. 

$ cd bin 

>> ./launcher start

>> ./presto --server 127.0.0.1:8090

 

 

 

 

결과 화면

 

 

 결과화면이다.

따라했다면, 큰문제는 없을것이다.

반응형