MongoDB and Tokyo Tyrant are useful now. CouchDB has promise, but is too slow currently. Non-relational databases have shown their worth at larger sites when used cleverly. Non-relational databases will continue to improve performance, stability & features. Relational databases are still a great choice: fast, powerful and proven. With caching, denormalization, rework (e.g. Drizzle) & better replication, they will continue to be competitive.
Hadoop 0.20 잠깐 봤는데 MapReduce 클래스가 모두 바뀌었네요. 기존에는 org.apache.hadoop.mapred 패키지였는데 org.apache.hadoop.mapreduce 라는 패키지가 만들어져 있고 기존의 org.apache.hadoop.mapred 패키지 대부분 클래스는 deplicate 되었습니다. Mapper 클래스도 기존의 configuration(), map(), close()가 아니라 setup(), map(), cleanup()으로 바뀌었네요. 기타 많이 바뀌었지만 일단 hadoop-0.20과 호환 가능하도록 Neptune의 MapReduceUtil 클래스를 조정해야 겠습니다. 아직 1.0은 아니라고 하지만 너무 심한 변화네요.
1. 기능 추가 [#3332] Bigtable에서의 Memory Cache 기능 [#3121] Metrics에 ganglia 지원 [#3055] Tablet balacer 기능
2. 기능 개선 [#3411] MultiVersion query에서도 사용자 정의 Filter 사용 가능해야함 [#3197] hadoop 미 실행시 tabletserver startup이 안되어야 함 [#3144] 포맷시 ChangeLog image 파일은 dfs에서 삭제되지 않음 [#3071] TabletInfo에 start row key 추가 [#2960] NTable의 tablet lookup cache hit 비율 높히기 [#2943] changelog verifier가 실패한 경우 처리 [#2939] Web 관리자 화면에서 Tablet의 change log replica 서버 목록 보는 기능 [#2862] Tablet Split 처리시 put lock 시간 최소화 [#2802] CellFilter내에 start CellKey, end Cell Key 지정 기능 [#2702] NBlobInputStream open시 permission에러인 경우도 txTimeout까지 대기 [#2671] changelog server가 tablet server보다 많은 경우 changelog server의 할당 정책
3. Bug fix [#3382] 웹UI에서 ChangelogServer가 Live와 Dead 둘 다 나타납니다. [#3196] Cell 클래스내 버그 [#2938] NeptuneMaster만 restart 되었을 때 TabletServer의 Tablet 갯수가 0으로 표시 [#2762] DirectUploader에서 Cell의 null value 지정 [#2535] IO operation is timed out 180 sec due to timed out waiting for rpc response [#2473] IO operation is timed out 180 sec
* 1.4에서 ROOT, META 테이블에 저장되는 데이터가 변경되었습니다.
1.3 사용자는 1.4 로 업그레이드시 반드시 업그레이드 절차에 따라 업그레이드 해야 합니다.
Hadoop, HBase, Neptune 등에서 공통적으로 사용되고 있는 클래스가 Configuration 클래스입니다. Hadoop은 Configuration, HBase는 HBaseConfiguration, Neptune은 NConfiguration 입니다. 이들 각각의 클래스는 클래스 패스 상에 있는 xml 파일을 읽어 환경 변수를 메모리로 로딩하는 기능을 수행하는 클래스입니다. Hadoop을 이용하는 프로그램은 주로 배치 작업인 경우가 많기 때문에 Configuration 객체를 생성하기 위해 파일을 로딩하는데 성능상의 문제가 큰 이슈가 되지 않습니다. 하지만 Neptune이 HBase와 같이 실시간 트랜젝션 처리를 수행하는 시스템의 경우 이런 작업이 성능에 큰 영향을 줄 수 있습니다. Configuration 정보를 얻기 위해 xml파일을 오픈하여 parsing 하는데만 수십 ms 이상이 소요되기 때문에 수 ms의 트렌젝션 시간을 지원해야 하는 시스템의 경우 잘못 사용하게 되면 성능에 문제가 발생합니다. 따라서 Neptune, HBase 등을 사용할 경우 Configuration 객체는 특별한 경우가 하니라면 한번만 생성하여 재 사용하는 것이 좋습니다. 여기서 특별한 경우한 트렌젝션의 종류에 따라 Configuration의 값이 틀려져야 하는 경우를 의미합니다. 그럴 경우에도 미리 생성해 놓고 공유하는 것이 좋습니다.