데이터베이스 46

데이터베이스 데이터 삽입 후 순위 발췌 구현 및 테스트.

RDB상에서 효율적으로 레코드를 한건 삽입하고 바로 이 레코드의 순위를 알기위해 실험한다. 다음의 테이블을 만들었다. 20개의 잉여 컬럼은 심심하니 그냥 넣었다. 이제 프로시저로 새로운 데이터를 자동으로 생성되게 해보자. 일단 시간이 굉장히 오래걸리기 때문에 백만건을 투입해본다. 프로시저는 다음과 같다. 현재 똥컴 시스템은 i5-4670 3.4Ghz / 8g 재원으로, 들어가는데 한참걸린다. 랜덤함수때문에 그런것인가. 백만건 약 14분 소요. 50MB 속도 (480만건 per 1hr) 일단 번외로 count(*)의 MyISAM 과 InnoDB간 속도차이를 측정해본다. 전자는 아예 행정보를 들고있고 InnoDB는 근사치를 내어준다. 아래와같이, InnoDB는 근사치를 들고있다. 무거운 엔진인 InnoDB의..

데이터베이스 2016.09.18

스타 스키마(Star Schema) 및 스노우 플레이크 스키마(Snowflake Schema).

스타스키마는 차원 테이블과 사실 테이블로 구성됨.차원 테이블 (각 요소를 나타내는 테이블) 은 사실 테이블의 키로 연결됨.사실 테이블 내에 있는 데이터에 대한 검색 기준으로 차원 테이블의 열을 사용함으로써 응답에 필요한 조인의 횟수를 최소화 시키지만 확장성과 유연성이 제한된다. 스노우플레이크는 차원 테이블이 정규화된 상태임.사실 테이블을 그대로 유지되는데 꼬리에 꼬리를 물고 차원테이블이 등장하게 됨. 저장공간이 최소화 되며 유연성이 증가하지만 복잡하고 결과 검증이 어렵다. 출처 : http://databrewery.org/cubes/doc/mapping.html

데이터베이스 2016.01.02

SQLD 대충 따는 법

열정맨 프로그래머로써 SQL개발자 (SQLD) 보다는 SQL전문가 (SQLP) 를 따야하지만, 어쨌든 선수조건 때문에 천릿길도 한걸음 부터.. 회사에서는 이 업무를 하는것과 그다지 관련이 없으니 SQL 의 S만 꺼내도 '니가 뭘알아' 를 당하는데, 허허허.. 어쨌든 회사에서 야근을 너무 많이해 개인 공부할 시간은 없었고 대충 아는거 긁어모아서 보았다. 시험 자체의 난이도는 기본 SQL를 짜고 그런 수준은 넘어서지만 집중해서 맞는 말을 잘 찍거나 그럴듯한 논리로 짜여져있는 복잡한 SQL을 혼신의 힘을 다해 고르면 직관에 의해 답이 맞기도 한다. 다만 주관식은 좀더 혼신을 다해 적도록 한다. 위와같이 붙는다. 너무 점수를 깨끗하게 지웠다고 뭐라고 하지 않도록 한다. 방구석과 데스크톱아이콘 빼고는 깨끗한 사람..

데이터베이스 2015.10.11

간단한 오라클 실행계획 생성방법

1. 실행계획 테이블을 만든다. 오라클 11g의 경우 아래와 같은 경로에 sql이 하나 저장되어있다. C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\utlxplan.sql sql을 @뒤에 위의 경로를 복붙해서 실행시키면 된다. 2. SQL Command Line 에서 set autot trace explain 을 입력한다. 3. SQL을 실행하면 이제 Execution Plan 이 뜬다. *참고 : 옵티마이저는 다음과 같은 문법으로 바꾼다. SQL> ALTER SESSION SET optimizer_mode = RULE; *참고 : 자동파일생성 및 통계정보 생성 문법은 다음과같다. SQL> ALTER SESSION SET Timed_Statistic..

데이터베이스 2015.09.28

mongo db 기본 UI 이용하기

몽고 DB 콘솔은 나름 직관적이지만, 데이터를 관리하는데에 있어서는 GUI툴이 필요하긴하다.일단 기본으로 제공되는 UI를 쓰려면 --rest 명령어로 몽고DB를 가동한다. mongod --rest 그리고 localhost:28017에 접속하면 다음과 같은 화면이 나오게 된다. 하지만 이거가지고는 별 할수있는게 없다. 다음의 express같은 툴은 굉장히 많다. 이용해보도록 한다.처음 8081 접속 아이디는 admin/pass 다.https://www.npmjs.com/package/mongo-expressnpm install mongo-expressnode applocalhost:8081

데이터베이스 2015.08.14

mondgoDB 간단 명령어

1. 데이터베이스가 생성될 물리적 경로생성 c:\>mkdir c:\MONGODB\test 2. mongoDB 버전 확인 >mongod --version 3. mongoDB 인스턴스 활성화 >mongod --dbpath c:\mongodb\test -- mogodb shell프로그램 실행 >mongo 4.test 데이터베이스로 이동할때 >use test 5. 데이터베이스 목록 출력 >show dbs 6. 데이터베이스 상태확인 >db.stats() 7. 데이터베이스 shutdown admin 영억으로 이동후에 셧다운 해야함. >use admin >db.shutdownServer() 8. 데이터베이스 로그아웃 >db.logout() 9.collection 생성 capped:true이면 해당 익스텐트를 모두 사..

데이터베이스 2015.08.01

커밋과 롤백

트랜잭션은 하나의 논리적인 작업단위임. 그래서 하나의 작업을 하고있으면, 커밋이 안된상태에서 다른곳에서 접근하려고 하면 그냥 멈춘다. 락이 걸린다. DDL작업시 데이터정의를 하기때문에 자동 커밋된다.커넥션이 연결된 자바에서는 오토커밋 처리다.만약 트랜잭션을 하기위해서는conn.setAutoCommit(flase);를 선언하주고conn.commit();을 맨 나중에 하면 된다.그리고 exception 이 나면 conn.rollback();으로 예외처리를 하게 하면 된다.

데이터베이스 2014.10.21