티스토리 뷰

728x90
반응형

 포스팅은 PostgreSQL Windows Installation 및 WildFly 연동 방법에 대해 가이드하겠습니다.


최근 Cloud 환경으로 넘어 오면서 급격하게 OpenSource Software를 사용하는 빈도가 늘어나고 있습니다. Standalone 환경에서 ScaleOut, ScaleIn이 유동적으로 이루어 질수 있도록 기반을 잡고 있고, PostgreSQL이 앞으로 DB 시장에 어떠한 역할을 할지 귀추가 주목됩니다.

 

1. PostgreSQL 설치

이에 postgreSQL에 주요 기능을 살펴 볼 예정이며, 먼저 Install 과정입니다.

바이너리 파일은 

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows

에서 다운로드 가능합니다.

 

         - URL 접속 시 위와 같은 화면으로 이동되게 됩니다.

   - 필수 선택 사항인 Select your version (postgreSQL Version 선택), Select your operation system(postgreSQL을 설치할 운영체제)를 선택하고

DOWNLOAD NOW를 클릭하면 설치 바이너리가 다운로드 됩니다.

제가 포스팅에 사용할 버전과 운영체제는 다음과 같습니다.

  

postgresql-10.3-1-windows-x64.exe

  

바이너리 파일에서 알수 있듯이 postgreSQL 10.3.1 Version과 Windows 64Bits를 선택했습니다.

다음은 설치 과정입니다.

 

1) Binary 실행

 

2)  Instruction Setup

 

         3) Installation Directory

 

         4) Select Components

 

 

         5)Data Directory

 

         6) Insert Password

 

         7) Port Setting

 

         8) Advanced Options (Setting Default Locale)

 

         9) Advanced Options (Select Korean, Korea)

 

         10) Pre Installation Summary

 

         11) Ready to Install

 

         12) Installing 

 

         13) Completing the PostgreSQL Setup Wizard (Stack Builder Install 여부 - 체크 해제)

 

         14) Stack Builder 체크 시 화면 (다양한 모듈 추가 설치 가능)

 

2. pgAdmin 활용 가이드

위와 같이 설치가 완료가 되면 pgAdmin을 실행할 수 있습니다.

 

1) pgAdmin 실행 시 아래와 같은 화면이 나타납니다. 

 

2) Servers를 선택하고 Install시 설치했던 PostgreSQL 10을 선택합니다.

   아래 이미지와 같이 Connect to Server를 위한 암호 입력창이 뜹니다.

   설치 시 Password 란에 입력했던 비밀번호를 넣고 OK 버튼을 클릭합니다. 

 

 

 

3) 서버 연결후 화면입니다.

다양한 정보들이 출력이 되는데요.

Dashboard에서는 Connect 되어 있는 Session 수, Transactions per Second, Tuples in - out, Blocking I/O, Server activity 등의 그래픽컬한 정보들을 실시간으로 확인할 수 있습니다.

  

 

4) Properties에서는 General (ID, Name, Server type, Version, Comments 정보), Connection (연결상태, HostName, Port, Username, Role 정보), SSL 사용여부, Advanced Info(Host Address, DB restriction) 등의 내용을 확인 할 수 있다.

 

 

5) SQL에서는 실제 SQL 문을 이용할 수 있습니다. 다만 아래 그림과 같이 PostgreSQL의 경우 No SQL을 지원합니다.

  

 

 

6) Statistics에서는 현재 기동되어 있는 Process의 PID, User, Database Name, Backend Start 정보, Client, Application 정보등을 볼수 있습니다.

 

 

3. PostgreSQL DB 추가하기

    

먼저 좌측의 Databases에서 우클릭 -> Create -> Database 선택

 

Database Info 입력 후 -> Save 버튼 클릭

 

아래와 같이 신규로 추가한 nrsonDB를 확인 할 수 있습니다.

 

# 참조

CLI 환경 (Linux / Unix) 에서는 아래와 같이 추가가 가능합니다.

  

nrsonServer $ create database nrsonDB;

CREATE DATABASE

nrsonServer $ \c nrsonDB

You are now connected to database "nrsonDB" as user "postgres"

nrsonServer $

 

create 문의 경우 database를 생성하는 구문이며, 역슬러시 c의 경우 database를 선택하는 방법입니다.

 

4. Schema 추가

postgreSQL에서는 다른 Database와 다르게 Schema라는 개념이 있습니다.

- Schema는 데이터베이스 내부에 있는 객체들(테이블, 함수, 시퀀스)의 관리를 편하게 하는 역할을 담당한다.

- Schema는 여러 사용자나 프레임워크에서 하나의 데이터베이스를 사용할 경우 충돌 현상을 예방할 수 있습니다. 약간 JAVA의 Interface 개념과 비슷해 보이네요.

nrsonDB의 Schema로 기본 public이 등록되어 있습니다. 앞으로 사용할 신규 Schema를 추가해 보도록 하겠습니다.

 

Schemas에서 우클릭 -> Create -> Schema 클릭

 

아래와 같이 필수 정보를 입력하고 Save 버튼 클릭

 

아래와 같이 Schema가 정상적으로 추가가 되었네요.

 

# 참조

CLI 환경 (Linux / Unix) 에서는 아래와 같이 추가가 가능합니다.

  

nrsonServer $ create SCHEMA nrsonDB;

CREATE SCHEMA

nrsonServer $ \dn

List of schemas

Name        |        Owner

------------------------------------

nrsonSchema           postgres

public                     postgres

nrsonServer $

 

create 문의 경우 SCHEMA를 생성하는 구문이며, 역슬러시 dn의 경우 SCHEMA List를 확인하는 방법입니다.

 

5. Table 추가

 

Table 추가를 위해 nrsonDB -> Schemas -> Tables에서 우클릭 -> Create -> Table 클릭

 

필수정보를 입력하고 Save (Tablespace 영역 선택 및 Partitioning 여부를 체크 할 수 있다)

 

아래 그림과 같이 nrsonTB이 정상적으로 생성되었네요.

 

6. WildFly 연동

자 다음으로 WildFly와 연동 방법에 대해 설명하도록 하겠습니다.

먼저 Wildfly 설정입니다.

 

1) jdbc 드라이버 설치

         jdbc 드라이버는 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 에서 다운로드 받거나, 앞서 설명드렸던

   Stack Builder에서 직접 설치하여 다운로드 받을 수 있습니다.

   Stack Builder 실행 프로그램을 $PostgreSQL_HOME\10\bin\stackbuilder.exe 파일이 있으니 실행하여 설치합니다.

   아래와 같이 Categories -> Database Drivers -> pgJDBC v42.2.1-1을 선택하여 Install 하시면 됩니다.

 

정상 설치가 완료되면 아래와 같이 JDBCDriver가 생성된 것을 확인할 수 있습니다. 이중 postgresql-42.2.1.jar 파일을 사용하여 Wildfly에 등록해 보도록 하겠습니다.

  

 

2) JDBC 드라이버 등록

Wildfly에 JDBC 드라이버를 등록하는 방법은

● 나라의 미들웨어 정복기 ●/- Wildfly [WildFly] Datasource 연동

를 참고하시기 바랍니다.

 

먼저 JDBC Driver를 다음위치에 업로드 합니다.

$WILDFLU_HOME/modules/org/postgresql/main

동일 경로에 module.xml을 작성합니다.

  

<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2010, Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags. See the copyright.txt file in the
  ~ distribution for a full listing of individual contributors.
  ~
  ~ This is free software; you can redistribute it and/or modify it
  ~ under the terms of the GNU Lesser General Public License as
  ~ published by the Free Software Foundation; either version 2.1 of
  ~ the License, or (at your option) any later version.
  ~
  ~ This software is distributed in the hope that it will be useful,
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  ~ Lesser General Public License for more details.
  ~
  ~ You should have received a copy of the GNU Lesser General Public
  ~ License along with this software; if not, write to the Free
  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  -->

 <module xmlns="urn:jboss:module:1.5" name="org.postgresql">

    <resources>
        <resource-root path="postgresql-42.2.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>

 

         위와 같이 작성 후 standalone.xml 파일을 편집합니다.

         [urn:jboss:domain:datasources:5.0]

<datasources>
    <datasource jta="false" jndi-name="java:jboss/postgresDataSource" pool-name="postgresDataSource" enabled="true" use-java-context="true" use-ccm="true" statistics-enabled="true">
                    <connection-url>jdbc:postgresql://localhost:5432/nrsonDB</connection-url>
                    <driver>postgresql-jdbc4</driver>
                    <security>
                        <user-name>postgres</user-name>
                        <password>jin58411</password>
                    </security>
     <validation>
      <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
     </validation>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="oracle" module="com.oracle">
                        <xa-datasource-class>oracle.jdbc.xa.OracleXADataSource</xa-datasource-class>
                    </driver>
     <driver name="postgresql-jdbc4" module="org.postgresql"/>
                </drivers>
</datasources>

   

module.xml & standalone.xml 파일이 어떻게 매칭되는지 여부는 위 다른 포스팅을 참고하시기 바랍니다.

준비가 완료 되었으면, wildfly를 재기동 합니다.

로그상에는 아래와 같이 기동 시점에 Driver 인식여부를 체크하게 되며, JNDI 등록 여부를 확인하게 됩니다.

 

...

13:13:10,783 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 36) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 42.2)

... 

13:13:10,935 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-5) WFLYJCA0098: Bound non-transactional data source: java:jboss/oracleDataSource

...

 

         등록이 완료되면 이후 과정은 기존과 동일하게 수행됩니다.

         [dbtest.jsp]

<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.*" %>
<%@ page import="java.rmi.*" %>
<%
try{
        Context ctx=new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("jboss/postgresDataSource");
        Connection con = ds.getConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("select 1");

        rs.next();
        out.println("Result is "+rs.getString(1));
        rs.close();
        con.close();
}catch(SQLException se){
        se.printStackTrace();
}
%>

 

 

         위를 호출하면, 아래와 같이 정상 연동 된 것을 확인 할 수 있습니다.

    

 

앞으로 진행될 포스팅에서는 앞서 말씀드린 것처럼 postgreSQL에 중점적인 포스팅이 이루어질 예정입니다.

많은 관심 부탁드립니다.

 

감사합니다.

 

# JDBC Driver

postgresql-42.2.1.jar


728x90
반응형