Backup을 위한 Data format 아이디어

우선 JSON을 사용하기로 했다. 제일 큰 이유로는 덩치가 큰 XML 라이브러리들 때문이다. 가볍다 싶으면 한글 처리가 제대로 안되는 경우도 많았고… 그래서 아예 JSON을 사용하기로 했다.

구상1. 필요한 데이터

1차적으로는 싸이월드의 백업이 목표이므로, 제목, 본문, 작성시간, 첨부파일(s), 카테고리, 작성자, 검색/스크랩/공개 설정, 태그(s) 가 필요하다.
답글에 대한 정보 : 작성자, 내용, 작성시간

구상2. 위 구상을 토대로 더미 데이터를 작성해보면…

{
    categories : ["Starwars", "Empire", "Jedi"],
    title : "This is a title",
    datetime : 1197135277, // seconds from 1970.1.1 00:00
    writer : "DarthVader",
    category : 1, // 카테고리 번호 0 부터 시작
    content : "I'm your farther.", // 따옴표가 \로 이스케이프 처리된 HTML
    allow : {
        search : 0, // 0은 허용안함
        scrap : 1, // 1은 모두허용, 2는 일촌공개(네이버 블로그등에서는 부분공개)
        access : 2, // 위와 동일
    },
    attachments : [
        "data/foo_photo.jpg",
        "data/bar_photo.jpg"
    ],
    tags : ["movie","starwars"],
    comments : [
        {
            writer : "Luke",
            datetime : 1197135389,
            content : "You're a liar!"
        },
        {
            writer : "Yoda",
            datetime : 1197139625,
            content : "Force may be with you"
        }
    ]
}

– 계속 수정되는 페이지

  1. 아.. 전달이 잘못된것 같아서 다시.
    “데이타교환”이란, 네트워크로 가볍게 전송을 하기위한 포멧인것!
    json도 충분히 구조화가 가능하긴 하지만 저장을 위한 포멧으로는 아무래도 별로 좋아보이지 않아요. 게다가 모든 스트링을 메모리에 올려서 파싱 또는 해석하기 전까진 쓸모있는 데이타가 아닌게 되므로 용량이 커지면 곤란하게 되는 포멧인거죠
    sqlite를 사용하는건 xml을 사용하는것보다 더 무거운 280KB ? 라이브러리를 올려야 하니까 메리트가 없어보이고..
    바이너리포멧을 쓰자고 이야기해본건, 앞에서부터 디스크억세스로 순차적으로 읽으며 바로 백업 해제를 할 수 있는 클라이언트를 만들기 쉬운 장점도 있지 않을까 싶어서에요

    1. 음… 독자적인 바이너리는 써드파티 만들기가 SQLite이나 XML, JSON보다 어렵지 않을까요? ^^ 싸이월드 백업까지만 사이다가 담당하고 공개된 포맷으로 만들어서 싸이to네이버, 싸이to티스토리, 싸이to이글루스 등등을 (제가 아닌) 누군가 만들어주도록 하는 것이 목표라서요~
      단순 백업 목적이라기보다는, 이전을 위한 포석의 성격이 좀 더 강해서요 -_-a (독자적인 바이너리 포맷 생각하고 구현하는 것도 사실 귀찮… 쿨럭…)

      하여간 고민해볼 문제이긴 하네요 =_=;;

  2. 반대 한표!
    데이타 교환을 위한 포멧이거나, 눈으로 보아 확인할 목적이 아닌 저장의 목적이라면 바이너리 포멧을 추천합니다.
    확실한 데이타 구조가 확보된다면 json 라이브러리를 끼워넣는정도의 노력으로 충분히 읽고 쓰기에 바이너리면 충분하다고 생각합니다.

    1. 에… 바로 그 이유때문이었는데요… “데이터 교환을 위한 포맷”
      사이다의 역할은 JSON을 포함한 zip 형태의 압축파일(확장자는 달라질지도)로 만들어주는 것이고요… 그것을 이용한 백업 프로그램은 다른 사람들이 만들어도 되도록이요 -_-a

      그 전에는 SQLite을 이용할까도 했는데(바이너리까지 한번에), 사용상의 편의나 호환성은 JSON+ZIP 형태가 더 나을 것 같더라고요. 애초계획대로 SQLite으로 할까 -_-;;

Leave a Reply