작년부터 유행 키워드로 NoSQL이라는 것이 있었다.
엔터프라이즈쪽을 쳐다본지 오래되서 상세한 내막은 잘 모르겠지만 RDB 스타일을 버린다고 한다. 지나친 관계화, 견고한 스키마를 버린다고.
이와 비슷한 일은 아주 미시적인 코드 레벨에서도 일어난다. C언어로 json 노가다를 하고 있노라면 반드시 한 번은 겪는다.
json을 파싱한다 -> 구조체에 때려넣는다 (관계화) -> 써먹을 때 다시 json을 인코딩 한다.
그렇게 생각해보면 아 내가 왜 구조체에 때려박는다고 파싱하고 난리 부르스를 쳤지? 하는 삽질 플래시백을 겪는다. 몇 번 쓰지도 않을 인덱싱이나 해싱 때문에?
게다가 백만분의 1 확률로 올까 말까한 특이 데이터 때문에 char [8] 이면 될 것을 char [1024]로 정의한 이 꼴은 무엇인가. (물론 한땀 한땀 동적으로 구현할 수도 있지만 복잡도가 백땀씩 증가한다.) 이걸 다시 어디 쏜다고 인코딩 한다고? 에휴.. 피곤하구나..
DBMS에 대해서는 잘 모르지만서도 그리하야 NoSQL의 이념을 읽어보게 되는 것이다.
우야뜬 어제의 코딩은 json을 컨텍스트 형으로 그냥 쓰는 쪽으로 설계 변경. jansson 을 쓰고 있는데 xpath 같은 path 기반 파싱 함수가 없어서 뚝딱뚝딱 만듦 ㅋ strtok 쓸 때 strtok_r 안 쓰면 멀티 쓰레드에서 깨져요 ㅋ
그나저나 10 몇년전에 후지쓰에서 자스민이라는 ODB 영업하고 다닐때가 생각난다. 지금 돌아보면 인덱싱이 다채로운, 그러나 스토리지 시스템에 가까웠던 듯.