• 데이터 베이스 Advanced2

    2018. 1. 5. 17:19

    by. 위지원

    Full Text Search

    검색을 할 때 ' like ... and .. or ' 이런 구문은 안써야한다고 한다.  대신 full text search를 사용하는 것인데 , 컬럼의 전체 내용을 단순한 문자열이라고 생각하고 검색하는 것.


    사용하기전 my.ini 파일에서 ft_min_word_len=2 로 수정하고 사용


    1) 테이블 생성/ 데이터 입력




    2) 검색


    - 자연어 : 정확도 순으로 정렬해서 보여준다



    - 불린 : 정렬을 하지 않은채 보여준다.




    Bulk insert

    기본적으로 레코드를 추가하면 정렬다시하고..인덱스 재구성하고.. 한번에 많은 레코드를 insert하게 되면 느려지고 그렇다. 이런 문제를 방지하기 위해 정렬과 인덱스를 모든 레코드를 다 추가한 뒤에 한번만 하게 하는 것


    alter table 테이블명 disable keys;


    insert....


    alter table 테이블명 enable keys;


    레코드를 한번에 많이 넣기 위해선 3가지의 방법이 있다.

    1) insert into 테이블명 values(..) valuse(..) ... 이렇게 여러번

    2) 파일로 dump (주로 백업/복원시 사용)

    3) csv 파일로 올림


    mysql에서 파일 저장하고 업로드하는 폴더는 따로 정해줘서 사용한다 (이거떄문에 예전에 개고생한적이있다 후후 추억이군)

    - my.ini 파일의 secure_file=[경로]


    Transaction

    장애가 발생했을 때 장애에 대응할 수 있도록 하는 기능

    - default 값은 autocommit으로 enter치면 치는 족족 바로 적용시켜준다.

    - select @@autocommit; 으로 확인하고 set autocommit =false; 로 적용

    -InnoDB에서만 가능하다


    ACID 특징

    1) 원자성 A

    2) 일관성 C

    3) 고립성/격리수준 I

    4) 지속성 D


    트랜잭션의 격리 수준(lsolation)

    트랜잭션에 일관성 없는 데이터를 허용함 원래는 serialization으로 트랜잭션을 동시에 수행하지 못하게 하는데 이는 너무 비효율적이다. 그래서 Read Uncommited 옵션을 주는데 성능은 높지만 트랜잭션이 commit되기도전에 데이터를 가져가기때문에 안전성이 낮다.

    그래서 보통 아래 2가지를 사용


    1) read committed : 트랜잭션이 끝난 후에

    2) repeatable read : update는 안되지만 트랜잭션이 처리되는 도중에도 insert는 가능


    select @@tx_isolation;

    set tx_isolation='READ-COMMITED';

    commit;


    대형 데이터베이스 구축 기술

    - scale-up : cpu, ram->ssd로 변경 등 성능을 업그레이드 시키는것으로 성능은 좋아지지만 그만큼 가격부담이 커진다. 병렬컴퓨팅 방식임


    - sacle-out : 서버를 더 두는 것임 가격이 적지만 상대적으로 성능은 떨어진다. 분산 컴퓨팅 방식임 *요걸 더 많이 씀 가격때문에

    VLDB(very lage database)

    1)샤딩  : db내용을 쪼개서 저장함 쓰기 기능 향상

    2)복제  : 동일 db를 계속 둠 읽기 기능 향상


    NoSQL

    일반 관계형 데이터베이스가 주로 읽기,검색에 비중을 두어 NoSql은 쓰기/수정과 같은 것을 도와주는 것

    - 몽고DB(최초),카산드라,HBASE,Redis


    - CAP

    Consistercy(일관성) : 어떤 노드에서 접근해도데이터가 동일해야한다

    Availability(가용성) : 노드 일부가 fail이 되어도 서비스가 중단되어서는 안된다

    Patition Tolerance(파티션 허용차) : 노드간 통신에 장애가 생겨도 문제가 없어야 한다    


    NoSQL CAP에 대한 이미지 검색결과


    일반적으로이 3가지를 다 만족하는 경우는 없으며 2가지씩 만족하는 경우가 많다



    - 저장형태

    1) key/value : Redis

    2) ordered key/value : Hadoop,Cassandra,Hbase

    3) document based : value가 JSON이나 XML문서 , MongoDB


    - schemaless *

    RDBMS : 정규화

    NoSQL : 반정규화 " NoSQL은 RDBMS에 비해 스키마가 좀 더 자유롭다" 아예 없다고하는것은 X

    검색엔진 : 비정규화