2013-11-26 4 views
0

게시물에 대해 다음과 같은 스키마가 있습니다. 각 게시물에 포함 된 저자 및 첨부 파일 (링크/비디오/사진 배열 등)이 있습니다.표준화 된 대 비정규 화 된 데이터 (mongo)

{ 
    "content": "Pixable tempts Everpix users with quick-import tool for photos ahead of December 15 closure http:\/\/t.co\/tbsSrVYneK by @psawers", 
    "author": { 
     "username": "TheNextWeb", 
     "id": "10876852", 
     "name": "The Next Web", 
     "photo": "https:\/\/pbs.twimg.com\/profile_images\/378800000147133877\/895fa7d3daeed8d32b7c089d9b3e976e_bigger.png", 
     "url": "https:\/\/twitter.com\/account\/redirect_by_id?id=10876852", 
     "description": "", 
     "serviceName": "twitter" 
    }, 
    "attachments": [ 
     { 
     "title": "Pixable tempts Everpix users with quick-import tool for photos ahead of December 15 closure", 
     "description": "Pixable, the SingTel-owned company that organizes your social photos in smart ways, has announced a quick-import tool for Everpix users following the company's decision to close ...", 
     "url": "http:\/\/t.co\/tbsSrVYneK", 
     "type": "link", 
     "photo": "http:\/\/cdn1.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2013\/09\/camera1-.jpg" 
     } 
    ] 
} 

글은 자주 읽습니다 (4 개의 탭이있는보기가 있으며, 각 탭에는 24 개의 글이 표시되어야합니다). 현재 Redis에서 이러한 목록의 색인을 생성하고 있으므로 4x24 게시물을 쿼리하면 Redis에서 목록을 가져 와서 (몽고 ID 목록 반환) ID로 게시물을 쿼리하는 것처럼 간단합니다.

삽입 된 작성자의 업데이트가 거의 발생하지 않습니다 (예 : 작성자가 그림을 변경 한 경우). 업데이트가 즉각적이거나 신속하지 않아도됩니다.

저자와 게시물을 서로 다른 두 개의 컬렉션으로 나누어야하는지 궁금합니다. 따라서 게시물에는 삽입 된/작성된 작성자 대신 작성자에 대한 참조가 있습니다. 정규화 된 데이터 상태가 여기에 선호됩니까 (작성자가 모든 게시물에 대해 중복되어 많은 중복 데이터/추가 바이트가 발생합니다)? 아니면 정규화되지 않은 상태로 계속해야합니까?

답변

1

글을 읽는 것보다 읽기가 약간 더 많아 보입니다.이 데이터를 두 개의 콜렉션으로 나누는 것은 거의 의미가 없습니다. 특히 업데이트가 거의없고 게시물을 표시하는 동안 거의 모든 작성자 정보가 필요하므로 하나의 쿼리가 두 개보다 빠를 것입니다. 또한 데이터 지역성을 확보하기 때문에 메모리에 데이터가 더 적게 필요하므로 잠재적으로 또 다른 이점이 있습니다.

그러나 프로덕션 환경에서 사용할 데이터의 양을 벤치마킹하여 실제로 알 수 있습니다.