RDB(relational database) 로 NoSQL 흉내내기

[Microsoft SQL 을 -> NoSQL 처럼]
-XML 형식으로 데이터를 지원, XML 형식의 데이터를 찾고, 입력하고, 수정하고, 삭제 가능
-SQL Server 2000 이후 부터 지원
-XML 데이터는 내부적으로 Binary로 저장되며 일반적인 경우 약간의 압축이 제공되어 인스턴스당 2GB 저장 가능
-참고
 http://technet.microsoft.com/ko-kr/library/ms177454.aspx
-예제
/*
테이블 생성 시 XML 형식의 열을 포함하도록 한다.
XML 키워드로 만든 xmldata 로 여러가지 쿼리를 수행한다.
*/
create table YsoftmanTable(id int not null, xmldata xml)

/* id가 1인 행에 XML 형식의 데이터 입력하기 */
insert into YsoftmanTable select 1, '
<?Employee Info?>
<Employee>
 <Name>YoonByoungHoon</Name>
 <Sex>Male</Sex>
 <Phone>123456789</Phone>
</Employee>
'
/* id가 2인 행에 XML 형식의 데이터 입력하기 */
insert into YsoftmanTable select 2, '
<?Employee Info?>
<Employee>
 <Name>BillGates</Name>
 <Sex>Male</Sex>
 <Phone>55555</Phone>
</Employee>
'

/* 내용 확인 */
select * from YsoftmanTable

/* id가 2인 행에서 Employee 하위 요소인 Name 요소의 모든 내용 찾기 */
select xmldata.query('/Employee/Name') from YsoftmanTable where id=2

/* id가 2인 행에서 Employee 하위에 Address 요소를 첫번째 위치로 추가 */
update YsoftmanTable set xmldata.modify('insert <Address>Seattle</Address> as first into (/Employee)[1]') where id=2

/* id가 2인 행에서 Employee 하위에 Mobile 요소를 Phone 요소 앞에 추가 */
update YsoftmanTable set xmldata.modify('insert <Mobile>2222</Mobile> before (/Employee/Phone)[1]') where id=2

/* id가 2인 행에서 Employee 하위에 Mobile 요소의 값을 변경 */
update YsoftmanTable set xmldata.modify('replace value of (/Employee/Mobile/text())[1] with "333"') where id=2

/* id가 2인 행에서 Employee 하위 요소인 Name 요소의 모든 내용 삭제 */
update YsoftmanTable set xmldata.modify('delete /Employee/Name') where id=2

/* id가 2인 행 삭제 */
delete from YsoftmanTable where id=2

/* 테이블 삭제 */
drop table "YsoftmanTable"



[MySQL 을 -> NoSQL 처럼]
-TPS(Transation Per Second) 성능의 대부부능 DataBase 층이 아닌 SQL 층에서 발생
 : MySQL 의 대부분의 오버헤드는 SQL 을 파싱하고 처리하는데 있고, InnoDB 접근하는 시간은 그리 길지 않다.
-InnoDB 에 접근할 수 있도록 해주는 HandlerSocket를 사용하여 NoSQL 로 접근(SQL과 NoSQL 로 동시 접근 가능)
-벤치마크 결과 750,000 QPS(Query Per Second) 처리
-참고
 원문 : http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
 한글 : http://note.oiko.cc/post/2937725236/handlersocket-for-mysql

comments:

댓글 쓰기