Mongodb数据库设计

概念

  • Mongodb是以面向对象存储的 , 做Obj<--->Doc之间的转换,一般用Java去实践
    • ORM工具:Obj Relation Mapping

数据库设计

  • 数据库设计
    ○ 什么样的数据存在里面
    ○ 数据怎么样存在里面(组织形式) & 应用如何去访问数据库
  • 数据库设计的基本步骤
    ○ 需求设计(软件的功能是什么): 了解用户需求,确定软件的基本功能
    ○ 概念结构设计(存什么): 确定数据库需要记录哪些对象
    ○ 逻辑结构设计设计(抽象怎么存):确定对象之间的关系以及文档结构。
    ○ 物理结构设计 (代码的实现):确定数据的存储方式、索引的使用、系统配置等等
    ○ 数据库实施:安装数据库管理系统、创建数据、调试、运行。
    ○ 数据库运行和维护:根据需求的扩展与变化,对以上结果进行调整和变更

MVC

  • MVC (model – view – controller)

对象

对象的确定

○ 软件功能涉及到的概念

  • 博客:用户、文章、评论、粉丝
  • 网上书店:图书、用户、购物车、订单、评论

○ 软件开发过程中出现的持久化需求

  • Java开发中遇到需要序列化的对象
  • MVC中Model的构建

对象之间的关系(Cardiality)

○ 1:1 —— 企业与CEO 、 配偶关系
○ 1:M —— 博客与评论、国家与城市
○ M:N —— 书与作者、用户与粉丝

拇指法则

  • 赞成嵌入,除非有一个令人信服的理由不这样做。
  • 需要访问一个对象本身是一个令人信服的理由不嵌入它。
    数组不应该无限制地增长。如果在“多”方面有超过几百个文档,不要嵌入它们;如果“多”方面有几千个文档,不要使用ObjectID引用数组。高基数数组是不嵌入的一个令人信服的理由。
  • 不要害怕应用程序级连接:如果正确索引并使用了投影说明符,那么应用程序级连接的开销几乎不比关系数据库中的服务器端连接高。
  • 在反规范化时考虑写/读比。一个通常会被读取但很少被更新的字段是反规范化的一个很好的候选:如果你对一个经常更新的字段进行反规范化,那么查找和更新所有实例的额外工作很可能会超过你从反规范化中获得的节省。
  • 与MongoDB一样,如何建模数据完全取决于特定应用程序的数据访问模式。您希望构造数据,以匹配应用程序查询和更新数据的方式。
0%