Search Results for 'DBMS'

66 POSTS

  1. 2013.06.20 Oracle Paging 쿼리 두가지 2
  2. 2013.06.10 MSSQL/Oracle/MySQL JDBC Driver Test 1
  3. 2013.02.06 MariaDB vs MySQL과의 호환성 체크 1

Oracle Paging 쿼리 두가지

Posted 2013. 6. 20. 09:18

1. 전통적인 방법


SELECT *

  FROM (SELECT ROWNUM rnum

              ,a.*

          FROM (SELECT *

                  FROM members) a)

 WHERE rnum BETWEEN startrow# AND endrow#;




2. Oracle 10g 이후부터 사용가능한 방법


SELECT * FROM 

(

SELECT a.*,

    CEIL((ROW_NUMBER() OVER ( ORDER BY #order by#  desc|ASC )) / #page_row# ) as PAGENUM,

        CEIL(COUNT(*) OVER() / #page_row)  as TOTALPAGE

        FROM table명

        WHERE 1=1

and ...

 

)

where PAGENUM = 1


속도는 당연히(?) 2번이 빠를것으로 생각. 테스트는 skip.



MSSQL/Oracle/MySQL JDBC Driver Test

Posted 2013. 6. 10. 21:45

간만에 삽질을 또 했습니다.

한동안 MySQL을 주로 사용하다가, Oracle을 썼고, 이번엔 MSSQL을 쓰게 되었는데, 초보적인 삽질아닌 삽질을 했습니다.

 

지난주까지 멀쩡하게 잘 되던 SqlServer 접속이 안되는 것입니다. 아무리 컴퓨터는 거짓말을 않한다지만...

 

원인은 이렇습니다.

 

1. 잘못된 Copy & Paste

 Class.forName("dirverName") 에 대한 부분이 좀 이상했습니다.

com.microsoft.sqlserver.jdbc.SQLServerDriver vs com.microsoft.jdbc.sqlserver.SQLServerDriver

 

...sqlserver.jdbc.SQLD~ 가 맞습니다.

 

2. DBMS마다 URL 형식이 다릅니다.

 

 - MySQL : jdbc:mysql://127.0.0.1:33061/dbName?

 - Oracle : jdbc:oracle:thin:@127.0.0.1:1521:orcl

 - MSSQL : jdbc:sqlserver://127.0.0.1:433;databaseName=dbName

 - MSSQL(jtds) : jdbc:jtds:sqlserver://127.0.0.1:1433/dbName;tds=8.0

 

정확히 언급하면 같은 DBMS 일지라도 jdbc Driver마다 다르다고 할수 있습니다.

 

3. DBMS 버전, JDK 버전마다 jdbc Driver가 다릅니다.

 

Oracle의 경우 초창기엔 classes12.jar/zip 을 썼지만 현재는 ojdbc를 사용합니다.

MSSQL의 경우 jdk1.5의 경우 JDBC3.0 스펙의 sqljdbc.jar를 사용하지만

jdk1.6의 경우엔 위의 jar를 사용할 경우 Connection이 되지 않습니다.

jdk 1.6 이상에서는 JDBC4.0 스펙의 sqljdbc4.jar를 사용합니다.

 

 

결론은 주말에 기존 작업하던 노트북 HDD를 SSD로 교체하면서 OS를 재설치 했습니다. 설치하면서 jdk1.5, jdk1.6 두개 설치했던것을 jdk1.6만 설치해서 접속이 되지 않은 것입니다.

 

더군다나 중간에 googling 하여 copy & paste 소스에도 driver class package명이 다르게 적혀있어서 삽질을 더 오래하게 되었습니다.

 

각 DBMS별 connection을 가져오는 pseudo 코드는 다음과 같습니다.

1. MS-SQL

//MS에서 제공하는 드라이버를 사용하는 경우
  String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=dbName";
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  Connection conn = DriverManager.getConnection(url, "db_user", "db_password"); 

//net sourceforge.net에서 제공하는 드라이버를 사용하는 경우

String url = "jdbc:jtds:sqlserver://127.0.0.1:1433/DBMS명";
Class.forName("net.sourceforge.jtds.jdbc.Driver");

Connection conn = DriverManager.getConnection(url, "db_user", "db_password"); 

 

 

2. Oracle 의 경우

 String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 Class.forName("oracle.jdbc.OracleDriver");

...

 

3. MySQL 의 경우

String url = "jdbc:mysql://127.0.0.1:33061/dbName?"

Class.forName("com.mysql.jdbc.Driver");

 

....

 

MSSQL의 3가지 종류 jdbc Driver

 

sqljdbc.jar

 

sqljdbc4.jar

 

jtds-1.3.0.jar

 



MariaDB vs MySQL과의 호환성 체크

Posted 2013. 2. 6. 18:09

지난번 설치와 관련한 글에 이어 이번엔 기존 MySQL과의 호환성에 대한 몇가지 테스트를 해보고자 합니다.


우선 이전글에서 설치시 MySQL을 삭제해야 합니다. MySQL을 삭제하더라도 기존에 사용중인 Data부분은 삭제되지 않습니다.

삭제전에 my.cnf 파일을 다른파일로 변경해놓습니다. 

그리고 MariaDB설치가 완료되면 my.cnf로 다시 변경해놓습니다.

yum으로 설치하니 MariaDB-Client는 설치가 되지 않습니다.

MariaDB-Client는 별도로 설치해줍니다.


~#]mysql -u root -p[비밀번호]  로 접속합니다.


여기까지는 지난번 글에도 해당되는 내용이니 패스~


우선 데이터베이스 선택, 생성, table 생성, 조회등의 기본 명령어는 완벽하게 동일합니다.


Windows에서 Client Tool로 사용하던 SQLyog 을 이용해서 접속해서 몇가지 테스트를 해봤으나 현재까진 완벽히 호환됩니다.


기존 MySQL에서 사용하던 데이터베이스도 그대로 사용가능합니다.

show databases를 하면 목록에 자연스럽게 나옵니다.


이번엔 MySQL dump 파일을 import 해봤습니다. 

SQLyog 및 mysql command를 사용해도 동일한 결과입니다. 모두 OK.


이전 문서를 보니 5.1에 비해서 5.3을 거쳐 5.5로 버전업되면서 오히려 MySQL과의 호환성은 더 좋아진듯합니다.


결론 : 현재까지 써본 결과로는 MariaDB는 MySQL과 같은 핏줄을 나눈 형제라기 보단 일란성 쌍둥이라는 느낌입니다.


이름은 마리아라서 여성의 느낌입니다만...


자세한 내용은 MariaDB홈페이지 및 "Monty에게 물어보세요."를 참고하세요.


https://kb.askmonty.org/en/mariadb-versus-mysql-compatibility/





« PREV : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : ··· : 22 : NEXT »