1.
2010년초에? 본 자료중 기억 저편에 있던 글이 하나 있습니다.
떠오르는 엔터프라이즈 기술 10선
NOSQL이라는 기술(정확히 말하면 Movement라는 합니다)입니다. 처음 보았을 때는 No SQL로 생각했습니다. Not Only SQL이라는 의미라고 합니다. 위의 글에서 소개한 NOSQL을 길지만 인용하도록 하겠습니다.
그렇다면 해결책은 무엇인가? 이런 구속에서 벗어나 NoSQL이란 새로운 접근법을 택하는 것이다. 기본적인 NoSQL 데이터베이스는?단순한 키와 값의 쌍으로 이루어져 있으며, 이들 쌍은 키와 속성값을 함께 묶어준다. 따라서 비어있는 열과 행으로 가득 찬?테이블도 없으며, 각 아이템에 새로운 애드혹 태그나 값을 추가하는 것도 문제없다. 트랜잭션도 선택사항일 뿐이다.
현재 NoSQL 솔루션으로는 프로젝트 볼드모트와 카산드라, 다이나마이트, HBase, 하이퍼테이블, 카우치DB, 몽고DB 등이?있으며, 매일 새로운 것들이 등장하고 있다고 해도 과언이 아니다. 이들 각각의 솔루션은 데이터에 액세스하는 방법이 조금씩 다르다.?예를 들어 카우치DB는 쿼리를 자바스크립트 기능으로 작성해야 한다. 몽고DB는 처음부터 내장 샤딩이 포함되어 있는데, 샤딩은?커다란 데이터베이스를 여러 조각으로 나눠서 여러 대의 서버에 분산시킨다.
단순한 키/값의 쌍은 단지 시작일 뿐이다. 예를 들어 Neo4J는 그래프 데이터베이스를 제공하는데, 네트워크를 돌아다니는 실제?루틴인 쿼리를 사용한다. 예를 들어 사용자가 한 친구의 모든 친구의 개의 이름을 찾는다 해도, 쿼리는 몇 줄이면 된다.
더 중요한 것은 불필요한 것은 피하면서 필요한 기능을 유지하는 것이다. 예를 들어 프로젝트 카산드라는 최종적으로 일관성 있는 답을?제공할 것을 약속하고 있는데, 아무리 무거운 시스템에서도 몇 초밖에 걸리지 않는다고 강조한다. Neo4J는 이름이나 콘텐츠로?특정 노드를 찾으려면 루신(Lucene)이란 다른 인덱싱 패키지를 필요로 하는데, NeoJ4는 네트워크 자체를 통해서 살펴볼 때만?도움이 되기 때문이다.
그러면?Rick Cattell의 High Performance Scalable Data Stores에서 정의한 내용을 요약하면 아래와 같습니다.
* 데이터 베이스라 부르기를 거부
* Key & Value로 저장되고
* 분산 환경 지원
* Call level interface 지원(DBMS에 접근하는 표준)
* 막대한 양의 데이터를 처리할 수 있는 대용량 데이터의 빠른 인덱싱
* 클러스터나 그리드에서의 구동을 위해 다양한 테이블로 데이터베이스를 나눠야 하는 복잡한
작업과 ‘샤딩(sharding)’ 없이 손쉽고 저렴하게 여러 서버들의 수평적 확장(horizontal scaling)
* 데이터의 스키마와 속성들을 동적 정의
오 픈 소스 기반의 고성능의 분산 데이터 저장 시스템들(NoSQL) 중에서
원문은 위의 PDF를 받으시던가 아래를 이용하시길 바랍니다.
다른 자료로는 NoSQL Databases – Part 1 – Landscape 를 참고하시면 좋을 듯합니다.
2.
굳이 NoSQL을 설명한 이유는 Back-Testing때문입니다. HFT라운드테이블 때 백테스팅에 대해 아래와 같은 의견이 나왔습니다.
그런걸 하기 위해서는 시세를 저장하기 위한 Database가 필요한데, RDBMS로는 속도가 안나와요. 메모리 DB도 쓸 수?있는데, 우선 DB에서 조회해오는 방식 자체가 latency가 있어서 그런 방식은 적당하지 않다고 봅니다. hdf5 같은 파일?형식으로 sequential 하게 데이터를 저장하고 읽어오는게 가장 좋은 방법인것 같아요.
HFT Round Table 정리.. 3. HFT 플랫폼중에서
백테스팅을 할 때 필요한 데이타는 Tick데이타입니다. 무척 많은 양입니다. 이를 처리하려면 위와 같이 여러가지 방식이 있지만 SQLite를 No SQL모드로 사용하는 경우도 있지만 NoSQL을 사용하는 경우도 있다고 합니다. 가능할까요?
한번 도전을 해보시면 어떨까 합니다.
3.
또다른 대안을 소개할까 합니다. VoltDB라는 제품으로 오픈소스이면서 상용서비스도 제공합니다. DBMS의 아버지라고 하는 Mike Stonebaker가 설립한 회사에 만든 제품입니다. 이 제품에 눈이 번쩍 뜨인 것은 모든 데이타관리를? 메모리에서 한다는 점입니다.
볼트DB는 전통적인 데이터베이스는 로깅이나 버퍼 관리 등의 시스템 과부하 문제로 상당한 성능 상의 손실을 야기하고 있다고 지적하고, 볼트DB의 접근법은 데이터베이스 트랜잭션의 무결성을 위한 ACID 개념을 고수하고, 개발자들이 SQL 사용 능력을 보호하면서 성능 상의 과부하를 줄여준다고 설명했다.
볼트DB는 디스크로부터 읽기/쓰기를 하는 대신 기본적으로 정보를 메모리에 저장해 성능을 향상시킨다. 데이터는 파티션되어 서버나 서버 클러스터의 모든 CPU 코어로 분산되어 일반적인 서버의 멀티코어 성능을 최대한 이용할 수 있도록 했다.
고가용성 측면에서는 데이터가 자동으로 복제되고, 장애가 난 노드는 가동 중인 노드의 복제본으로부터 신속하게 데이터를 복구한다. 또한 다른 툴을 이용해 백업이나 분석용으로 데이터베이스의 스냅샷을 저장할 수도 있다.
대규모 OLTP 전문 볼트DB 본격 출시…오픈소스 옵션 제공중에서
NOSQL운동에 대한 RDBMS진영의 반격이라고 평가하는 기사도 있습니다.(^^)
VoltDB vice president of marketing Andy Ellicott told The Reg: “The challenge is to remove all the overhead, but ? unlike the NoSQL key value store guys ? keep ACID properties, to make sure the database maintains integrity of data automatically and make sure the database can be accessed by the SQL.
“We will work between partitions in an ACID way ? that separates us from the sharders, as opposed to writing roll-back logic. It’s true ACID.”
Cassandra implements an “eventually consistent” model which trades-off consistency of data stores in the system for availability. Cassandra is licensed under the Apache Software License 2.0 and is available to download from cassandra.apache.org.
HFT에서? 가장 중요한 것은 Latency입니다.? MMDB(=Main Memory Database)를? 많이 채택합니다만 VoltDB가 특정한 영역에서는 대안이 될 수 있지? 않을까 합니다. 이와 관련된 사례가 보고되었습니다.
Software made by two of Stonebraker’s prior companies, Vertica Systems Inc. and Streambase Systems Inc., is part of that advantage. The new company, VoltDB, is out of stealth mode with another tool high-frequency traders can use to gain an edge. High-frequency trading desks use Streambase to run algorithms and execute trades in real time. Vertica is used to test traders’ theories, back-testing algorithms against historical market data. VoltDB, still in alpha testing mode, may be used by firms to hedge exposure during the millisecond when 100 trading desks all take the same position on a security.
“Instead of getting market tics, you’re simply getting a list of trades that every desk in your company makes ? and you just want to assemble the complete position of the entire company and then ask questions about it,” Stonebraker said.
Stonebraker’s startups: Trading in the blink of an eye중에서
Steambase와 VoltDB를 이용하여 HFT 전략을 실행하였다고 합니다. 물론 베타단계일 때.
이제 정식으로 출시되었습니다.? HFT 시스템을 위해 많은 돈을 드릴 필요는 없어졌습니다. 오픈소스세계에서는 다양한 대안이 존재합니다.
다만 여러 솔류션을 종합하여 하나의 시스템을 구축하는 것이 문제입니다. 제가? 관심갖는 분야입니다.(^^)
와 좋은 정보 잘 보고 갑니다. ^^
고맙습니다.
블로그를 보니까 저하고 취향이 하나 같네요.
저도 원피스 무척 좋아합니다. 예전엔 이누야사를 좋아했고.
딸아이들과 원피스 자주 봅니다. 임펠타운을 탈출하여 형을 구하러 가는 장정이 그려지는데…사실 이미 만화론 봐서…^^
VoltDB 는 리눅스와 맥에서만 지원을 하고.. 윈도우는 지원계획이 없다는 이야기가 있군요…
시세데이터를 다루기 위해서 ms-sql 에 보면 filestream 을 이용하는건 어떨까요? 시세데이터를 메모리에 모아서 일정크기로 스트림파일로 저장을 하면 될것도 같은데.. 속도가 안나올까요?
(엑셀에서 파워피붓으로 컨트롤 하려면 아무래도 DBMS에 저장을 해야할듯 한데..ㅜㅜ MMDBMS를 윈도용으로 찾아봐야 겠네요..-_-;)
PowerPivot이라는 말은 들어보았지만 사용해본 적이 없어서.사실 저는 DB전문가도 아니고 개발자도 아니라서…(^^;)
개발이 가능하시면 예전에 Visual C++개발자들에게 검토요청했던 프로그램이 있습니다.
http://www.quilogic.com/
SQL/XML-IMDB라는 제품인데 가볍게 메모리DB를 사용할 수 있도록 해줍니다. 물론 사용하실 수 있는지는 시험을 해보셔야 할 듯. 2006년쯤 검색해서 기억해두었던 제품인데 망했나 봤더니만 아직 망하지 않고 있네요.