Skip to content

Writing

머환임 edited this page Mar 19, 2023 · 3 revisions

소개

글 작성 행위를 플랫폼화한다.

용어 정의

  • writer
    • 글쓴이
  • writing
    • 작성한 글

범주

TEXT 기반의 모든 글을 포함할 수 있다.

  • smeem
    • 일기
    • 한 줄 일기
    • 일기 내 댓글
      • 대댓글
  • 커뮤니티
    • 게시글
    • 댓글
    • 대댓글
  • ..

이후 미디어 기반의 글로 확장한다.

  • Writing based on Media
    • TBD

기능

simple CRUD

  • 글을 작성한다.
    • POST /v{version}/writing
  • 글을 수정한다.
    • full
      • PUT /v{version}/writing/{writingId}
    • partial
      • PATCH /v{version}/writing/{writingId}
  • 글을 삭제한다.
    • erase each (단건)
      • DELETE /v{version}/writing/{writingId}
    • erase many (다건)
      • DELETE /v{version}/writing?writingId=
    • clear (전체)
      • DELETE /v{version}/writing

depth CRUD

  • 자식 글을 작성한다.
    • POST /v{version}/writing/{parentWritingId}

적용 방식

Mandatory

  • header
    • serviceToken
      • 요청 서비스의 플랫폼 사용 인증 토큰
    • userId
      • 요청자 구분자

설계

metadata on MySQL

컬럼 명 타입 기타
id varchar pk (auto_increment)
service enum pk
kind enum pk
writerId varchar userId
createdAt bigint
updatedAt bigint

real data on cassandra

구분 컬럼명 타입 기타
Partition Key service varchar 대상 service
partition_id varchar 파티션 구분자
slot-writerId-writingId
Clustering Key kind varchar 글 종류
id bigint writing id
columns data varchar 글 데이터
content varchar 미디어 (확장)
  • kind asc
  • id desc

Partitioning

  • 사용 Service 를 기준으로 파티셔닝되어진다.
    • ex. snim
  • 글쓴이 (writer) 를 기준으로 파티셔닝되어진다.

Clustering

  • 글쓴이 (writer) 가 작성한 글의 종류에 맞춰 군집화된다.
  • id 는 desc 로 최신 순으로 정렬되어진다.

data

{
  "title" : String,
  "body" : String
}