이번 포스팅에서는 Greenplum Database, Postgresql Database에 사용할 수 있는 오픈소스 Database Tool인 DBeaver 설치, 사용법을 소개하겠습니다. 

그동안 PostgreSQL tool인 pgAdmin4 를 썼는데요, DBeaver가 더 나은 것 같아서 갈아 탔습니다. 

DBeaver는 PostgreSQL, Greenplum DB 외에도 MySQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby 등의 Database에도 사용할 수 있으므로 활용도가 매우 높습니다. 물론 오픈소스니깐 공짜로 그냥 설치해서 사용하면 됩니다. 

* 출처: https://dbeaver.io/


  1, Mac OSX 에 DBeaver Community Edition (ver 5.3.5) 설치하기

저는 Brew 를 이용해서 설치했습니다. 

1. 터미널을 엽니다. 

2. Brew 가 설치되어 있지 않으면 아래의 스크립트를 그대로 실행시키고, 맥북의 비밀번호를 입력해주세요. 만약 Brew 를 이미 설치하셨다면 2번은 건너뛰고 3번만 실행시키면 됩니다.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null 

3. 터미널 창에 brew cask install dbeaver-community  를 실행합니다. 

MacBook-Pro:~ user$ brew cask install dbeaver-community

Updating Homebrew...

==> Auto-updated Homebrew!

Updated 1 tap (homebrew/core).

==> New Formulae

cafeobj                 gnunet                  homeassistant-cli       re-flex                 sd                      v2ray-plugin

gloo-ctl                h3                      i386-elf-grub           riff                    serve

==> Updated Formulae

git                               cdogs-sdl                           gcc                                 nwchem

kubernetes-helm                   cfengine                            gdk-pixbuf                          odpi

pcre                               cflow                               geckodriver                         offlineimap

abcde                               cfr-decompiler                      gecode                              ohcount

abcmidi                             cglm                                geocode-glib                        openssl@1.1

activemq-cpp                        chakra                              gerbil-scheme                       paket

aescrypt-packetizer                 check_postgres                      get_iplayer                         pandoc

afflib                              checkstyle                          git-lfs                             pandoc-citeproc

afio                                chkrootkit                          gitlab-runner                       parallel

agedu                               cli53                               glslang                             passenger

algernon                            click                               gnu-tar                             pdftoedn

amqp-cpp                            closure-compiler                    go                                  petsc

angular-cli                         cmark-gfm                           godep                               petsc-complex

annie                               cocoapods                           golang-migrate                      pgweb

ansible                             cointop                             gomplate                            phoronix-test-suite

apache-arrow                        collector-sidecar                   goreleaser                          php@7.1

apache-arrow-glib                   commandbox                          grafana                             picard-tools

apache-flink                        conan                               grpc                                planck

app-engine-java                     configen                            gwyddion                            plank

apt-dater                           confluent-oss                       gx                                  pmd

arangodb                            consul-template                     gx-go                               ponyc

aravis                              convox                              handbrake                           pre-commit

arm-linux-gnueabihf-binutils        coturn                              helmfile                            presto

armadillo                           couchdb                             hub                                 primesieve

arpack                              cpprestsdk                          i386-elf-binutils                   prometheus

artifactory                         cproto                              ibex                                protobuf

asciidoctorj                        crc32c                              imagemagick                         protobuf-c

asio                                cryptominisat                       ipfs                                protobuf-swift

ask-cli                             cryptopp                            jdupes                              protoc-gen-go

atkmm                               cscope                              jenkins                             pulumi

ats2-postiats                       csfml                               jhipster                            redis@4.0

auditbeat                           cython                              joplin                              rhash

aurora                              czmq                                kibana@5.6                          rust

autogen                             darcs                               kitchen-sync                        sbcl

avfs                                dartsim                             kompose                             sfml

aws-sdk-cpp                         davix                               kops                                shadowsocks-libev

awscli                              dcd                                 kube-ps1                            shellz

axel                                ddrescue                            kubeprod                            ship

azure-cli                           deark                               kubernetes-cli                      siege

azure-storage-cpp                   debianutils                         kustomize                           simutrans

babeld                              deja-gnu                            lcov                                singular

babl                                deployer                            ldc                                 skaffold

backupninja                         dhex                                lean-cli                            sn0int

bacula-fd                           dialog                              leiningen                           solr

balena-cli                          diffoscope                          libgweather                         spotbugs

batik                               diffstat                            libheif                             sqlmap

bazel                               digdag                              libphonenumber                      step

bee                                 dita-ot                             libpulsar                           supersonic

befunge93                           django-completion                   libqalculate                        svgo

bettercap                           docfx                               librealsense                        swagger-codegen

bgpstream                           docker                              libsecret                           swagger-codegen@2

bibtexconv                          docker-completion                   libtensorflow                       swiftformat

bigloo                              dovecot                             libxlsxwriter                       swiftlint

binaryen                            dpkg                                linkerd                             terragrunt

bind                                draco                               liquibase                           tgui

bindfs                              dscanner                            lmod                                thors-serializer

bit                                 dub                                 logtalk                             tippecanoe

blastem                             duck                                lzlib                               tmux-xpanes

bluetoothconnector                  dwdiff                              maxwell                             topgrade

bmake                               dwm                                 mesa                                typescript

boxes                               dyld-headers                        metricbeat                          unrar

brew-php-switcher                   dynamips                            minio-mc                            vagrant-completion

bro                                 eccodes                             mkl-dnn                             vault

buildifier                          elasticsearch                       mosh                                wabt

burp                                elasticsearch@5.6                   mosquitto                           wtf

bwm-ng                              elektra                             mysql@5.6                           xmrig

bzt                                 emscripten                          ncompress                           xtensor

c-blosc                             erlang@20                           nginx                               yara

caffe                               eslint                              nifi                                ydcv

calabash                            exploitdb                           node                                yle-dl

calcurse                            fabio                               node-build                          you-get

calicoctl                           flake8                              node@10                             youtube-dl

carrot2                             fn                                  node@6                              zbackup

cassandra@2.1                       frugal                              node@8

cassandra@2.2                       fx                                  ntopng

cdk                                 gambit-scheme                       numpy


==> Tapping homebrew/cask

Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...

remote: Enumerating objects: 4086, done.

remote: Counting objects: 100% (4086/4086), done.

remote: Compressing objects: 100% (4075/4075), done.

remote: Total 4086 (delta 24), reused 442 (delta 8), pack-reused 0

Receiving objects: 100% (4086/4086), 1.31 MiB | 593.00 KiB/s, done.

Resolving deltas: 100% (24/24), done.

Tapped 1 command and 3985 casks (4,093 files, 4.2MB).

==> Caveats

dbeaver-community requires Java 8+. You can install the latest version with


  brew cask install java


==> Satisfying dependencies

==> Downloading https://github.com/dbeaver/dbeaver/releases/download/5.3.5/dbeaver-ce-5.3.5-macos.dmg

==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/44662669/a1006c00-3315-11e9-84bc-679ab5a9b0aa?X-Amz-Algor

######################################################################## 100.0%

==> Verifying SHA-256 checksum for Cask 'dbeaver-community'.

==> Installing Cask dbeaver-community

==> Creating Caskroom at /usr/local/Caskroom

==> We'll set permissions properly so we won't need sudo in the future.

Password:

==> Moving App 'DBeaver.app' to '/Applications/DBeaver.app'.

🍺  dbeaver-community was successfully installed!

MacBook-Pro:~ user$ 



  2. Java JDK 설치 하기

Java JDK 가 설치되어 있지 않으면 'Java JDK를 설치하세요'라는 메시지가 뜹니다. (JDK가 설치되어 있다면 2번은 건너뛰면 됩니다)

java 설치 여부 및 버전은 아래처럼 java -version 으로 터미널에서 확인해볼 수 있습니다. 저는 Java 가 없으니 설치가 필요(requesting install)하다고 메시지가 나오네요. 

MacBook-Pro:~ user$ java -version

No Java runtime present, requesting install.


Oracle 의 아래 주소에서 macOS용 jdk-11.0.2_osx_x64_bin.dmg 파일을 다운로드 받았습니다. 

[다운로드 주소]

https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html


Linux, macOS, Windows 중에서 자신의 OS에 맞는 것을 선택해서 다운로드 하면 됩니다. 이때 Oracle License Agreement 를 accept 한다고 체크를 해주어야 합니다. 


jdk-11.0.2_osx-x64.dmg 파일이 다운로드 완료되면 아이콘을 더블 클릭해서 설치 애플리케이션을 시작합니다. 가운데 아이콘을 클릭한 다음에 '계속' 단추를 누르면서 설치를 합니다. 맥북 비밀번호 입력하라는 창이 뜨면 비밀번호를 입력해주면 설치가 완료됩니다. 



JDK가 잘 설치되었는지 java -version으로 확인해보겠습니다.

MacBook-Pro:~ user$ java -version

java version "11.0.2" 2019-01-15 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) 



  3. Docker로 Greenplum DB 설치하고 실행하기

자세한 내용은 아래의 블로그 포스팅과 Docker Hub를 참고하시기 바랍니다. 

==>  https://rfriend.tistory.com/379

==> https://hub.docker.com/r/hdlee2u/gpdb-analytics

(터미널 사용)

## Docker 이미지 내려 받기

$ docker pull hdlee2u/gpdb-analytics

## Docker 이미지 확인 하기

$ docker images

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

hdlee2u/gpdb-analytics  latest           3be773a1a7e1        About a minute ago   4.93GB

## Docker 이미지를 실행/ 5432를 기본 포트로, ssh를 2022포트를 사용하여 접근 가능하도록 Docker 컨테이너 생성

$ docker run -i -d -p 5432:5432 -p 28080:28080 --name gpdb-ds --hostname mdw hdlee2u/gpdb-analytics /usr/sbin/sshd -D


## Docker 컨테이너 목록 확인

$ docker ps

CONTAINER ID    IMAGE                   COMMAND                   CREATED             STATUS              PORTS                   NAMES

7518fd48450a        575a7d45999d        "/bin/bash"              1 minute ago         Up 6 hours                  0.0.0.0:5432->5432/tcp, 0.0.0.0:28080->28080/tcp   gpdb-ds


## Start GPDB and Use psql

$ docker exec -it gpdb-ds /bin/bash

[root@mdw /]# su - gpadmin

[gpadmin@mdw ~]$ gpstart -a



  4. DBeaver 실행하고, Greenplum DB 연결 설정하기 (GPDB connect)

맥북의 Launchpad에서 DBeaver 아이콘을 클릭하면 아래와 같은 DBeaver가 실행됩니다. 'Select your database' 화면창에서 'PostgreSQL'을 선택하고 '다음(Next)'을 선택합니다. 


Connection Settings 화면이 나오면 (3번에서 소개한 docker image 로 Greenplum DB를 론칭한 경우) 

 - Host: localhost

 - Database: gpadmin

 - User: gpadmin

 - Password: pivotal

 - Port: 5432

로 입력해주세요. 만약 다른 환경의 Greenplum DB를 사용하고 있다면 그에 맞게 Host, Database, User, Password를 설정해주면 됩니다. 


Greenplum Database에 DBeaver tool이 제대로 연결이 되면 아래 화면처럼 왼쪽 분할면에 Database, Schema, Tables 네비게이터가 나타나고, 테이블을 하나 선택하면 오른쪽는 Data 셋을 Grid나 Text 형태로 볼 수 있습니다. 

(테이블의 데이터 사이즈가 엄청 큰 경우에는 테이블을 클릭해서 Data 보기를 하지 마시기 바랍니다. DB가 다운되어서 DB관리자에게 요주의 인물로 찍히는 수가 있습니다. SQL Editor 창에서 select 문으로 limit  걸어서 조회하시기 바랍니다.)


SQL Editor 는 상단 메뉴에서 'SQL Editor'를 선택하거나, 또는 상단 메뉴바에서 '말아놓은 종이모양 아이콘'을 클릭하면 됩니다. 


SQL select 문을 쓸 때 from 절의 테이블 이름은 좌측 분할면의 Navigator 창에서 해당 테이블을 마우스로 드래그 & 드랍해서 SQL Editor의 from 절 다음에 가져다 놓으면 schmema_name.table_name 이 자동으로 써지므로 편리하게 이용할 수 있습니다. 

SQL Editor에 쓴 SQL query를 실행할 때는 'control(^) + enter' 를 누르거나, SQL Editor 창의 세모 (아래 화면 캡쳐의 빨간색 부분) 아이콘을 누르면 됩니다. 


이상으로 DBeaver 설치 및 DBeaver를 Greenplum Database에 연결하고 DB, Schema, Table 보기 및 Query 실행하는 방법에 대해서 알아보았습니다. 


많은 도움이 되었기를 바랍니다. 

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. 


728x90
반응형
Posted by Rfriend
,