큐브리드 매니저는 MySQL의 GUI Tools와 같이 DB를 쉽고 편하게 접근할 수 있게 해줍니다. 그렇다고 너무 툴에 의존하시면 쿼리문 다 까먹습니다-_-; 사실 전 툴의존도가 높아서 insert문도 가끔 생각이 안날때가 있습니다-_-;

우선 메뉴를 보면 파일, 편집, 도구, 동작이 있는데요. 
파일, 편집은 제끼고, 도구에서 보면 데이터베이스를 조작할 수 있는데요. 데이터베이스별로 동작을 중지하고 시작할 수 있더군요. 다른 것에서는 안되는 것 같았는데... 암튼 도구에는 여러 유용한 도구가 있습니다. SQL파일을 가져와서 실행하는 것도 있구요.

1. 데이터베이스 생성.
우선 큐브리드 매니저로 데이터베이스를 생성해봤습니다. 데이터베이스 이름이.....6자를 넘기지 못하는군요-_-; 6자로 제한한 이유가 있는건가요? 다른 건 길게 써도 된 것 같은데-_-;
사용자 삽입 이미지
헉....방금 1.2버전이 나온 것 같아 설치하니 6자이름 넘는 것도 되는군요-_-; 데이터베이스를 생성하는데 볼륨타입이라는 게 있는데 이게 뭔지 모르겠네요.

2. 테이블(클래스)
테이블 생성하는 곳이 없어서 한참 찾았습니다. demodb를 보니 스키마 -> 사용자스키마 -> 클래스 부분에 있더라구요. 큐브리드는 객체지향적인 DB를 설계하려고 했던 것 같습니다. 검색해보니, 큐브리드는 ORDBMS(Object-Relational)라고 불리우는데요. 기존에 RDBMS에 단점을 보완하고자 이 개념을 적용한 것 같은데요. 테이블을 상속하고, 데이터를 객체로 봐서 참조접근이 가능하도록하고, 객체에서 set형태로 데이터를 저장하는 법도 가능한 그런 기능이 들어있는 것 같습니다(테스트는 안해봤습니다 ㅠ)
객체지향적 설계된 애플리케이션에 유리할 것 같기도 하네요(DB를 잘 몰라서-_-) 암튼, 클래스를 생성하는 게 테이블 생성하는겁니다 ^^
생성에서 column은 속성인가보군요. 타입은 기본적인 것은 다 지원하는 것 같습니다만(저도 항상 사용하는 타입만 사용하는지라-_-), 오라클에서 제공하는 BLOB이나 CLOB타입 같은 건 없는건가...-_-;
암튼 테이블을 생성하고 나면 인스턴스(레코드를 인스턴스라고 하는군요)를 추가하고 추가된 인스턴스를 엑셀파일로 뽑을 수 있군요. 다른 dbms는 다양한 타입으로 뽑을 수 있는데, 그것도 지원했으면 좋겠네요^^

3. 질의편집기
음.....컨트롤 스페이스를 지원하지 않아요 ㅠ 보면 SQL문의 코드완성은 지원을 해주고 있습니다.
사용자 삽입 이미지
테이블명 같은 것은 안되네요. 코드힌트 기능이 결코쉬은 것은 아니지만 있었으면 좋겠네요^^ 그리고, 당연히 국산이여서 한글이 깨질 일은 없겠죠?^^ 예전에 오라클과 Golden32를 사용했을 때 한글문제로 애먹었거든요. 단순 인코딩이 안맞아서 그런 것이였지만 ^^

후.....매니저를 이것저것을 만져봤는데, 기본기능은 다 있지만, 심화기능은 많이 없습니다. 프로시저생성이나 함수생성 같은 경우는 제가 못찾는 건지 모르겠지만, 없네요. 질의편집기에서 직접 생성해야하는 듯 합니다. 결과에서 편집하는 것도 제가 못하는 건지 편집기능이 없는 것 같네요.

그래도, 국산DBMS가 있다는 게 참 자랑스럽네요. 다음 시간에는 직접 db를 조작해봐야겠습니다. 애플리케이션과 연동도 해보고, 데이터 내용도 불러보고.......-_-;

 
Posted by 머드초보
,
 
이 망할 놈의 오라클은 LIMIT이 지원되지 않습니다.
LIMIT이 얼마나 편한데!!!
오라클에서 LIMIT과 같은 기능이 필요했습니다.

ROWNUM이라는 것을 알게 되었는데, SELECT를 하게 된 결과에 자동으로 처음부터 끝까지 1부터 숫자를 매겨주는 듯했습니다. 아, 그래서 만약에 10번째꺼부터 20번째꺼를 추출해봐야지 라고 이런 쿼리를 날려봤습니다.

[code]SELECT * FROM BIZLIST WHERE ROWNUM >= 10 AND ROWNUM <= 20[/code]
이렇게 하니까 아무것도 안나오더라구요.
이게 안돌아가는 이유는 ROWNUM이라는 놈이 가상 칼럼이랍니다. 그래서 만약 칼럼이 SELECT될 때 10개가 출력되야하는 상황이라면 첫번째꺼 출력하고 ROWNUM을 붙이고, 두번째꺼 출력하고 ROWNUM을 붙이고, 그러다보니 저 조건에 맞지 않게 됩니다.

첫번째 출력될 놈은 ROWNUM이 1인데, 저 조건에 부합하지 않습니다. 그래서 출력이 안되고, 10번째 출력될 놈도 출력하려고 보니 다 조건에 맞지않아요. 그러다보니 차례대로 다 안나옵니다-_-;

즉 조건에 부합한 놈이 출력되고 난다음에 ROWNUM을 붙여줍니다.
그래서 ROWNUM이 10을 1로 바꿔버리면 ROWNUM이 1인놈부터 20개까지는 출력이 되는것이죠.

제가 설명을 좀 못하니 여기를 참조 하세요 ^^
http://www.oracle.com/technology/global/kr/oramag/oracle/06-sep/o56asktom.html

저걸 악(?) 이용하면 LIMIT처럼 구현할 수 있습니다-_-;
[code]SELECT * FROM (SELECT ROWNUM RNUM, BIZLIST.* FROM BIZLIST WHERE STATUS = 'A') A
WHERE A.RNUM BETWEEN 10 AND 20[/code]
쿼리를 잘 보시면 A테이블을 서브쿼리를 날려서 만들어줍니다. 즉 우리가 10~20까지 추출해야할 데이터를 다 추출해서 A라는 테이블을 만듭니다. 여기서 A테이블을 보면 ROWNUM도 칼럼에 추가를 시킵니다. RNUM이라는 이름으로!
그다음 이 추출된 모든 것이 보면 ROWNUM도 다 붙어있습니다. 그래서 이걸 다시 SELECT해서 RNUM이 10과 20사이인 것을 추출하게 하면 되는것이죠.
A테이블에서 WHERE절은 원하는 조건이니 없어도 되는 것이고-_-;
별 것도 아닌데 거창하게 써 놓은 이유는 제가 이것 때문에 반나절을 고생해서 입니다-_-;
아놔....ㅠㅠ

 
Posted by 머드초보
,
 
사실 VARCHAR2타입에서 최대값을 뽑는거 자체가 바보같은 짓이지만-_-;
VARCHAR2타입은 말그대로 CHAR타입입니다. 그래서 문자열만 들어가야합니다.
근데, 이건뭐 설계를 다 VARCHAR으로 때려박아서 SEQ부분을 VARCHAR로 해놨더군요.
그래서 시퀀스하게 숫자를 관리하겠다고 얘기를 하더군요.

SEQ칼럼이 999가 최대값이면 INSERT할 때마다 1씩 증가해서 다음에 인서트를 할 때 1000가 되게 하라-_-;
이건 Number타입으로 AutoIncrement로 할 수 있고, Number타입이면 그냥 max함수써서 하면되는데-_-;

어쨌든, VARCHAR타입을 숫자로 바꿔줘야합니다.
TO_NUMBER라는 함수가 있습니다.

"ID",CHARNUMBER,GROUPID
2,10000,1
1,9999,1
3,10001,1
요런 데이터가 있다고 칩시다.
그럼,
select max(to_number(charnumber)) from chartonumber group by groupid
요렇게 때려주시면, MAX값을 추출합니다.

저게 보니까 ASCII 순서대로 하는건지는 잘 모르겠지만, 'MUDCHOBO'라는 문자를 넣어버리면, 쿼리가 안날려집니다-_-; ORA-01722: 수치가 부적합합니다 라는 에러가 뜨네요.

자.....이제 DB설계자를 막 욕합시다-_-;

 
Posted by 머드초보
,
 
이 큐브리드는 설치후기라고 쓰는게 맞을 듯 해요-_-;

그냥 국산DBMS가 뭐가 있을까 라는 생각에 검색을 해봤습니다. 알티베이스는 JCO가서 알게 된거라 다른 것도 뭔가 있을 듯해서 찾아봤습니다. 그랬더니 큐브리드라는 것이 나오더군요. 한번 설치를 해볼까? 라는 생각에 설치를 시도했습니다.
이럴수가-_-; 그냥 인스톨하니 SERVER랑 CLIENT가 다 설치되고, 알아서 작동도 되는군요.
오른쪽 아래에 tray아이콘을 생성해서 서버를 start하거나 stop할 수 있게 해놨구요.

큐브리드 매니저라는 것을 제공하는데 처음 비밀번호는 admin, admin인 것 같습니다.
그리고 처음에 설치할 때 sample을 설치할 것인지를 묻는데 이것을 설치하면 subway라는 데이터베이스를 생성하는 것 같습니다.

매니저를 통해서 접속을 해보면, demodb랑 subway 2개의 db가 있는 것을 볼 수 있습니다.
subway를 클릭하면 dba라는 계정으로 권한이 있는 듯 한데, 처음에 비밀번호는 없습니다.
그냥 dba 하고 비밀번호 비어두고 로그인하면 로그인이 됩니다.
dba 비밀번호 바꿔주고 ^^ db별로 start를 시킬 수 있는 듯 합니다. 데이터베이스서버를 가동해봅시다.
bus, gate, line, running, station, transit 등의 테이블이 있네요.

우선 설치면에서는 MySQL이나 Altibase보단 훨씬 쉽네요-_-; 다음신공으로 DB가 설치가 되다니-_-;
jdbc도 CUBRID\Server\java\jspserver.jar 파일이 JDBC드라이버 같네요.
JDBC도 당연히 되는 듯 합니다.

저는 DBMS는 Oracle, MySQL, MSSQL, DB2 뭐 그외에는 별로 안쓰는줄 알았는데 국산 DBMS도 있는 줄 처음 알았어요 ^^ 앞으로도 많은 발전이 있었으면 하네요.

PS. 아 그리고 이 큐브리드가 보니까 NHN에 납품하는 것 같던데 맞나요?--; 네이버가 이것을 쓰는건가-_-;
 
Posted by 머드초보
,
 

저번달에 JCO놀러갔다가 알티베이스라는 국산DBMS를 알게 되었습니다. 그래서 한번 사용해볼까 라는 생각을 가지고 있었는데 시간이 없어서 그냥 있다가 갑자기 생각나서 설치를 해봤습니다.

Windows용은 설치가 완전 쉽습니다-_-; installer를 제공해서 걍 설치를 하면 알아서 환경변수도 등록해주고, 알아서 다 해주네요. 나중에 Linux나 Unix용으로도 한번 해봐야겠습니다.

우선 altibase홈페이지에서 Windows용으로 설치파일을 받습니다. 회원가입을 해야합니다.
http://adc.altibase.com/
여기서 Product -> Package클릭 후 WINDOWS용으로 클릭하면 나옵니다.
32BIT이면 32BIT용으로 받고, 64BIT이면 B4BIT용으로 받아야합니다.
저는 이걸로 altibase-WIN_NT_5.0-32bit-4.3.9.75-release-VC6.exe

실행하면 설치화면이 나오고 다음신공으로 설치를 합니다. 설치가 완료되면 환경변수를 등록해야하는데
자동으로 환경변수를 등록하게 됩니다.
ALTIBASE_HOME이라는 환경변수를 등록하고 해당 BIN디렉토리를 PATH로 잡아주더군요.

라이센스를 받아야합니다.
홈페이지에서 Member -> Download Info를 클릭하면(http://adc.altibase.com/member/down_info.jsp)
자기가 뭘 다운받았는지 다 나옵니다. 오른쪽에 보시면 라이센스신청클릭해서 신청하면 됩니다.
여기서 Windows에서는 Mac Address를 입력 잘해야합니다.
잘못 입력했더니 Internal Error : Invalid Protocol이라면서 안되더군요.
참고로 ipconfig/all해서 나오는 것 중에 랜카드가 여러개 있으면 가장 위에 것을 입력해야하는 것 같습니다.
가장 위에 것을 입력했더니 되더군요 ^^

라이센스가 메일로 날아오는데 이 license라는 파일을 ALTIBASE_HOME/conf 디렉토리에 복사하면됩니다.
그다음 이렇게 하면 됩니다.


C:\Documents and Settings\Owner>isql -u sys -p manager -sysdba
-----------------------------------------------------------------
     Altibase Client Query utility.
     Release Version 4.3.9.75
     Copyright 2000, ALTIBASE Corporation or its subsidiaries.
     All Rights Reserved.
-----------------------------------------------------------------
ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300
iSQL(sysdba)> startup process;
Trying connect to database server. Connected with database server.

TRANSITION TO PHASE : PROCESS
Command execute success.
iSQL(sysdba)> create database mydb initsize=10M noarchivelog;
DB Info (Page Size     = 32768)
        (Page Count    = 385)
        (Total DB Size = 12615680)
        (DB File Size  = 1073741824)
        Creating MMDB FILES     [SUCCESS]
        Creating Catalog Tables [SUCCESS]
        Creating DRDB FILES     [SUCCESS]
  [SM] Rebuilding Indices [Total Count:0] **** [SUCCESS]
DB Writing Completed. All Done.
Create success.
iSQL(sysdba)> shutdown abort;
Database server killed..
iSQL(sysdba)> startup service;
Trying connect to database server. Connected with database server.

TRANSITION TO PHASE : PROCESS

TRANSITION TO PHASE : CONTROL

TRANSITION TO PHASE : META
  [SM] Recovery Phase - 1 : Preparing Database
  [SM] Recovery Phase - 2 : Loading Database
                          : Dynamic Memory Version => Loading Type-2
  [SM] Recovery Phase - 3 : Skipping Recovery & Starting Threads...
                            Refining Disk Table
  [SM] Refine Memory Table : ...................................................
... [SUCCESS]
  [SM] Rebuilding Indices [Total Count:64] ****.................................
................................................................................
............... [SUCCESS]

TRANSITION TO PHASE : SERVICE
--- STARTUP Process SUCCESS ---
Command execute success.
iSQL(sysdba)> exit
C:\Documents and Settings\Owner>

근데 그냥 위처럼 안하고 clean이라고 쳐도 돼요-_-;
그리고 나중에 서버구동할 때에는 그냥 isql접속 안하고 server start 라고 치면 돼요.
종료할 때는 server stop이라고 치면 되구요 ^^
어쨌든 이제 됐는지 확인해봅시다.

이클립스(eclipse)에서 제공하는 Data Source Explorer를 이용해서 접속해봅시다.
우선 Altibase용 JDBC가 필요하겠죠? 이것도 ALTIBASE홈페이지에서 받도록 합시다.
Product -> Environment에 있습니다. http://adc.altibase.com/product/environment.jsp
다운로드받고 Data Source Explorer 설정을 해봅시다.

오른쪽 아래에 Data Source Explorer가 안보인다면 Windows -> Other -> Data Source Explorer 확인 ^^

Databases대고 오른쪽버튼을 누르고 New클릭
Generic JDBC Connection 클릭
Name은 대충 AltibaseTest라고 써놓고 Next
Select a driver from the drop-down에서 ...을 클릭해서 Add
Generic JDBC Driver선택, Add Jar/ZIP클릭 후 다운받은 Altibase.jar 선택
Driver Name은 Altibase Driver라고 바꿈.
아래부분에 Driver Class를 ...클릭해서 Altibase.jdbc.driver.AltibaseDriver 선택
방금 추가한 Altibase Driver를 선택
Database는 mydb, URL은 jdbc:Altibase://127.0.0.1:20300/mydb
User name은 sys
Password는 manager
Finish후에 AlitibaseTest오른쪽버튼 대고 Connect!
접속 되면 된겁니다 ^^ 아마도-_-;

이제 설치밖에 안해봤는데 사용자계정 추가하고, 뭐 이것저것 알아볼라면 또 삽질해야하네요 ^^
어쨌든 국산인데 이런 훌륭한 DBMS가 있는 줄 몰랐네요. 지켜봐야겠네요^^

 
Posted by 머드초보
,