'New Hardware'에 해당되는 글 1건

  1. 2009.11.22 DBMS on New Hardware 9
CS 전공/리뷰2009. 11. 22. 15:06
XML이 출현하여 관심을 받아오던 99년, 그 때부터 시작된 이 연구는(까맣게 모르고 있었지만, 이 바닥의 빅 가이들은 이미 눈치채고 연구해왔던), 기존의 DBMS 코드들이 고안되었던 70,80 년대의 컴퓨터 시스템과 지금의 컴퓨터 시스템의 차이 때문에 기존 DBMS에서 널리 사용되던 알고리즘들을 다시 고려해야 한다는 생각에서 출발하였다.

이전의 컴퓨터 시스템과 현재의 컴퓨터 시스템의 차이를 들자면, 여러가지가 있겠지만 현재까지 누적되어온 중요한 차이점들은 다음과 같다.

1) 더 커진 메모리 용량(capacity) 하지만 그만큼 개선되진 못한 접근속도(latency), 그리고 메모리 접근속도의 개선속도보다 더 빠르게 상승한 clock speed의 CPU. 그리고 이러한 접근속도의 차이에 의해 발생한 이에 따른 메모리 벽(memory wall) 문제
 (메모리 벽 문제에 대해서는 일전에 올려둔 을 참고하세요) 
2) 더 커지고 계층화된 HW cache와 이에 따른 메모리 계층(memory hierarchy)
3) Supersclalar CPU(Out-of-Order Instruction Execution), branch prediction, SIMD, 그리고 SMT(Symmetric Multithreading)와 같은 CPU에서의 개선기능들.
4) Multicore(CMP; Chil-level MultiProcessor), Cell Processor, GPU등과 같이 달라진 구조의 CPU
5) Flash Memory
6) FPGA(Field Programmable Gate Array)

즉, 현재의 시스템은 위와 같은 여러 추가적인 기능들을 제공하게 되는데, 기존의 코드들은 이러한 기능들을 제대로 이용하고 있지 않는다는 사실이다.
그래서, 사람들은 Colume-oriented DBMS와 같은 data placement의 변경을 고안하기도 했으며,
또한 메모리 벽 문제를 해결하기 위한 Cache-conscious와 Cache-oblivious algorithm들을 고안하였다.
뿐만 아니라, CSB+-tree 처럼, B-tree와 같은 주요 자료구조들을 다시 바꾸기도 하였다. (Main-memory DBMS에서 이용하는 T-tree는 cache에 대한 고려가 전혀없는 구닥다리라나...) 또 칩 레벨의 멀티 프로세서를 지원하기 위한 여러 방법들이 고안되었고, GPU를 CPU 이외에 질의처리를 위한 보조 프로세서로 활용하기 위한 연구들도 2004년부터 소개되어왔다. 
최근에는 I/O 비대칭성과 in-place update가 안되는, 하지만, latency와 요구전력이 HDD에 비해 월등히 낮은 Flash memory를 위한 여러 연구들도 진행되어 왔다.
요새는 또 FPGA를 이용해 알고리즘을 HW로 구현하는 방식을 통해, 현재의 폰 노이만 방식의 컴퓨터 성능보다 몇십배 향상된 처리 성능을 보장하기도 한다. 

이러한 약 10년간에 걸친 HW 변화에 따른 DBMS 기능의 개선을 위한 연구들의 흐름을 따라가기가 참 버거웠는데, 이들을 한눈에 파악할 수 있도록 해주는 좋은 참고문헌들이 있어서 이를 소개한다.

1) Database Optimizations for Modern Hardware'' J. Cieslewicz and K.A. Ross Proceedings of the IEEE, 96(5), ..... Ken Ross kar@cs.columbia.edu. April, 2009 Paper

2) Database Architectures for New Hardware (invited tutorial), in the 30th International Conference on Very Large Data Bases, Toronto, Canada, August 2004. Also presented as a refereed seminar at the 21st International Conference on Data Engineering, Tokyo, Japan, April 2005.  Slides

3) Query Co-processing on Commodity Processors, in the 22nd International Conference on Data Engineering, Atlanta, Georgia, April 2006 Slides Part I [2.3MB], Part II [2.8MB]

이 쪽 관련해서는 콜럼비아대의 Kenneth Ross, CMU의 Anastasia Ailamaki, 그리고 네덜란드 CWI의 Peter Boncz와 S. Manegold 등이 대가이고, Column-oriented DB 관련해서는 Yale의 Daniel Abadi 등이 많은 연구를 수행하였다.
Flash Memory 관련해서는 여기 문 교수님과 성대 이상원 교수님이 또 좋은 연구를 하셨다.

FPGA를 이용한 알고리즘의 HW로의 구현은 최근에 연구들이 나오기 시작했는데, 제시하는 실험 결과들을 보면 정말 대단하다. dynamic programming 기법의 알고리즘들을 대상으로는 상대적으로 불리할 듯 싶지만, static하게 작성된 알고리즘들을 FPGA로 구현하는 경우에는 그 속도 향상이 엄청난 듯 싶다. 이미 Kickfire 등에서는 FPGA를 이용해 DB 알고리즘들을 구현하기 시작했다고. (http://dbmsmusings.blogspot.com/2009/09/kickfires-approach-to-parallelism.html)


Posted by Bart