Table of Contents

1 mongodb 패턴

  1. 다형성 패턴 : 비슷한 데이터에 조금씩 다른 프로퍼티를 가지는 것.

    https://www.mongodb.com/developer/products/mongodb/polymorphic-pattern/

  2. 애트리뷰트 패턴: 유사한 필드가 많은 큰 문서를 기반으로 하는 문제에 유용하다. 공통 특성을 공유하는 필드의 하위집합(subset of fields)을 정렬, 쿼리 할 수 있음.

    예를들어, 영화의 개봉일이 각 나라별로 다르다면, 그것을 releases 프로퍼티에 배열로 {"location": "seoul", "date": ISODate()} 로 넣으면 된다. 아래 버킷 패턴과 비슷하지만 의도가 다름.

    pros :

    1. 더 적은 인덱스가 필요함.
    2. 쿼리 작성이 간단해지고, 일반적으로 더 빠르다.

    https://www.mongodb.com/developer/products/mongodb/attribute-pattern/

    마틴파울러의 UserDefinedField 패턴 참고 : https://martinfowler.com/bliki/UserDefinedField.html

  3. 버킷 패턴 : 시계열, 실시간 분석 또는 사물인터넷 앱 같이 스트리밍 데이터를 관리해야 하는 경우. 도큐먼트 하나에 프로퍼티를 버킷으로 지정하고 그 프로퍼티에 배열로 push를 계속하면됨. 그 배열 안에 있는 프로퍼티를 몽고디비는 인덱스를 걸 수 있기 때문에 꽤나 괜찮음.

    pros :

    1. 컬렉션의 전체 도큐먼트 수를 줄임.
    2. 인덱스 퍼포먼스를 높임.
    3. pre-aggregation(사전집계)를 활용하여 데이터 엑세스를 단순화할 수 있다.

    https://www.mongodb.com/blog/post/building-with-patterns-the-bucket-pattern

  4. 컴퓨티드 패턴 : 미리 데이터를 계산해놓는 것. (예: 조회수) 이 패턴은 read intensive 상황에서 유용하다. 지속적으로 읽어서 계산해야 하는 정보의 경.

    https://www.mongodb.com/blog/post/building-with-patterns-the-computed-pattern

  5. Document Versioning : 이전버전의 문서를 유지해야 할 때

    https://www.mongodb.com/blog/post/building-with-patterns-the-document-versioning-pattern

  6. 스키마 버저닝 패턴 : https://www.mongodb.com/blog/post/building-with-patterns-the-schema-versioning-pattern

Author: Younghwan Nam

Created: 2024-09-25 Wed 07:42

Emacs 27.2 (Org mode 9.4.4)

Validate