当前位置:数据库 > mongodb >>

列举一个mongodb应用场景,更适合使用嵌入文档(反范式化)设计

列举一个mongodb应用场景,更适合使用嵌入文档(反范式化)设计
 
目前我们正在准备开发一个类似于evernote的云笔记的产品,为用户提供通过Android手机和PC终端的笔记的管理,用户可以新建文字笔记、手写笔记、语音笔记和照片笔记。MongoDb就是我们服务器侧保存文档的首选数据库,同时为了保证数据的一致性和高性能,我们对文档进行反范式化设计。参考MongoDB设计模式,对笔记数据进行了如下设计。
 
文字笔记: 
{

    _id: ObjectId(...)), 
    metadata: { 
        nonce: ObjectId(...), 
        type: 'text-note'title: 'note-2013-06-28', 
        created: ISODate(...), 
        author: { 
            _id: ObjectId(…), 
            name: 'David' 
        }, 
        tags: [...], 
        detail: { 
            publish_on: ISODate(…), 
            text: 'Today is Friday\n...' 
        } 
    } 
}

 

 
手写笔记:该笔记分为元数据和数据块存放在MongoDB里,其中文件通过GridFS进行存储,元数据的集合格式如下:
 
 {

    _id: ObjectId(…), 
    length: 123..., 
    chunkSize: 262144, 
    uploadDate: ISODate(…), 
    contentType: 'image/jpeg', 
    md5: 'ba49a...', 
    metadata: { 
        nonce: ObjectId(…), 
        type: 'handwriting', 
        locked: ISODate(...), 
        parent_id: ObjectId(...), 
        title: 'Handwriting note', 
        created: ISODate(…), 
        author: { 
            _id: ObjectId(…), 
            name: 'Jared' 
        }, 
        tags: […], 
        detail: { 
            filename: ' Handwriting_note.jpg', 
            resolution: [1600, 1600], 
            … 
        } 
    } 
}

 

 
录音笔记:该笔记分为元数据和数据块存放在MongoDB里,其中文件通过GridFS进行存储,元数据的集合格式如下: 
{

    _id: ObjectId(…), 
    length: 123..., 
    chunkSize: 262144, 
    uploadDate: ISODate(…), 
    contentType: 'audio/basic', 
    md5: 'far5a...', 
    metadata: { 
        nonce: ObjectId(…), 
        type: 'audio', 
        locked: ISODate(...), 
        parent_id: ObjectId(...), 
        title: 'Audio note', 
        created: ISODate(…), 
        author: { 
            _id: ObjectId(…), 
            name: 'feifei' 
        }, 
        tags: […], 
        detail: { 
            filename: ' audio_note.au', 
            … 
        } 
    } 

 

}照片笔记:该笔记分为元数据和数据块存放在MongoDB里,其中文件通过GridFS进行存储,元数据的集合格式如下:
 { 
    _id: ObjectId(…), 
    length: 123..., 
    chunkSize: 262144, 
    uploadDate: ISODate(…), 
    contentType: 'image/jpeg', 
    md5: 'de39a...', 
    metadata: { 
        nonce: ObjectId(…), 
        type: 'photo', 
        locked: ISODate(...), 
        parent_id: ObjectId(...), 
        title: 'photo note', 
        created: ISODate(…), 
        author: { 
            _id: ObjectId(…), 
            name: 'duanduan' 
        }, 
        tags: […], 
        detail: { 
            filename: ' photo_note.jpg', 
            resolution: [1600, 1600], 
            … 
        } 
    } 
} 

 


CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,