`

NoSql数据库设计实体的一些原则

阅读更多

1、有排序需求的属性在设计document的时候要定义一个属性,不能放到contents里面去,否则后期无法实现排序的需求。

2、有频繁检索需求就要为其定义一个属性用来存放其值。不能只存放到contents里面去。或者两个地方都存放。

3、如果有全文检索的需求实体的设计方案:

如果不用第三方的检索工具那就只能是尽量多的将属性存放到conents里面去,外面的用or查询来实现,此时外面不应当有太多属性。

 

NoSql的Collection设计 原则。

1,Collection 有固定的schema。

2,减少字段名的长度。减少存储空间。

3,_id由客户端生成。降低服务端的压力。

4,当单个表数据量在千万级以上时,建议用分表的模式来设计

分表设计要对指定字段进行水平拆分。

注意:分表设计有个前提,就是查询要能按照拆分的规则找到对应的表。不然到时候都不知道去那张拆分的表里面去查询。

 

 

 

4、一对多关系的几种设计

        a、一对很少且不需要单独访问内嵌内容的情况下可以使用内嵌多的一方。最主要的优点就是不需要单独执行一条语句去获取内嵌的内容。最主要的缺点是你无法把这些内嵌文档当做单独的实体去访问,更新不方便,单条数据不能大于16M。是最优先考虑的方式

         eg:人的住址(一个人可能有多个住址)

          User   {_id,name,adress:['','','',......]}

        b、一对多且多的一端内容因为各种理由需要单独存在的情况下可以通过数组的方式引用多的一方的主键。

        eg:parts(零件)、product(产品)一个产品由多个零件组成

        parts 表

           {_id,name,price}

        product 表

           {_id,name,parts:[id1,id2,id3,......]}

        c、一对非常多的情况下,请将一的那端引用嵌入进多的一端对象中。

            好处:查询灵活,扩展性高。

            eg:用户集合 和用户消息集合

        d、双向关联(方便查询,但是更新要改动两个文档,无法保证原子操作)

        e、反范式(冗余many端的数据到one端 或 冗余one端的数据到many端) 冗余那些读取频率远远大于更新频率的字段还是值得的

5、多对多关系的设计

      a、在数量不稳定的实体中存放数量稳定的实体id集合,这样设计的好处是数量不稳定的实体变化时可以不用调整数量稳定的记录的内容。

      注意:在关系型数据库中会设计一张中间表。

      b、相互持有另一方的主键集合。

        eg:Team表和User表

             Team表

                   {temId,teamName,teamMates:[userId1,userId2,UserId3,......]}

             User表

                   {userId,userName,teams:[teamId1,teamId2,teamId3,......]}

 

6、精确利用索引 参考http://wangshirufeng.iteye.com/admin/blogs/2264633

7、前期数据设计不用考虑后期统计报表的需求。实现统计报表功能的时候可以按照统计报表的需求重新设计实体,然后将前期收集到的数据按照一定规则提取到统计报表设计的实体中去,然后在将统计报表中的数据在报表界面显示即可。

 

 注意:MongoDB中 不管数据库如何设计都一定要保证单条数据不能大于16M。

 

相关链接:http://www.jianshu.com/p/bb0caddff60a

                  http://www.cnblogs.com/smileberry/p/4171035.html

分享到:
评论

相关推荐

    《数据库原理》课后习题及答案.

    - 这部分可能涉及关系代数、元组演算、规范化理论,以及如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等数据库设计原则。 7. **数据库设计**: - 数据库设计涉及需求分析、概念设计(通常使用E-R模型)、...

    山东大学 nosql期末复习笔记 nosql 期末复习

    - **BASE**:基本可用、软状态、最终一致性,是NosQL数据库通常采用的数据一致性模型。 3. **扩展与复制策略** - **分片**:通过区间划分、轮流放置或一致性哈希实现水平扩展。 - **复制**:主从复制和对等复制...

    (重点)数据库期末考试复习题及答案

    ER(实体-关系)模型是概念设计阶段常用的方法,用于描绘实体、属性和实体间的关系。 - 正确设计数据库的关键是正常化,通过消除冗余和依赖,确保数据的一致性和完整性。 3. SQL语言: - SQL(结构化查询语言)是...

    数据库设计指南-数据库设计教程

    11. **数据库设计原则**:如KISS(保持简单和愚蠢)、YAGNI(你不会需要它)等,可以帮助避免过度设计。 12. **数据库设计工具**:例如MySQL Workbench、Oracle SQL Developer等,可以帮助我们更直观地进行数据库...

    关系数据库设计与规范化.docx

    关系数据库设计需要遵循一定的设计原则和技巧,这包括需求分析、概念设计、逻辑设计和物理实现四个阶段。优秀的设计能够提高数据管理效率,提升数据质量,同时降低数据维护成本。 关系数据库规范化是为了消除数据...

    数据库的设计文档(设计说明书)

    1. **数据库设计的基本概念**:数据库设计涉及对数据模型的选择,如关系型数据库、NoSQL数据库或图形数据库等。关系型数据库是最常见的,基于E-R(实体-关系)模型,而NoSQL则适用于大数据和分布式环境。 2. **需求...

    数据库设计的 10 个最佳实践!(csdn)————程序.pdf

    2. **选择合适的数据库类型**:根据应用程序的需求,选择适合的数据库类型,如SQL数据库用于结构化数据,NoSQL数据库则适用于非结构化或半结构化数据,以及特定场景如机器学习和物联网。 3. **一致的命名规范**:...

    数据库设计经验

    最后,随着大数据和云计算的发展,NoSQL数据库、分布式数据库等新型数据库技术逐渐崭露头角。它们在处理高并发、大规模数据场景时具有优势,但也需要开发者理解其特有的设计原则和最佳实践。 总结来说,数据库设计...

    数据库设计与开发课件

    概念设计通过ER(实体-关系)模型将业务实体和它们之间的关系转化为图形表示;逻辑设计则将ER模型转换为关系模式,即表结构;物理设计考虑数据的存储方式和访问效率,如索引、分区等。 接着,我们深入到SQL语言,它...

    数据库设计相关系列教程文档

    9. **NoSQL数据库**:随着大数据和分布式系统的兴起,NoSQL数据库如HBase、Cassandra等的使用越来越广泛,文档可能会讲解其设计理念和应用场景。 10. **数据库设计案例分析**:通过实际案例,展示如何进行需求分析...

    数据库设计指南-60个设计技巧-pdf.rar_数据库设计

    14. **NoSQL与NewSQL**:对比关系型数据库,探讨NoSQL数据库(如MongoDB、Cassandra)和NewSQL(如Google Spanner、TiDB)的特点和适用场景。 15. **数据库设计工具**:如MySQL Workbench、ERD工具等在数据库设计...

    电子商务数据库设计1111

    数据库设计应遵循规范化原则,避免数据冗余,提高数据的一致性和查询效率。同时,为了应对高并发的电子商务环境,可能需要考虑读写分离、缓存策略、负载均衡等高级设计。此外,随着大数据和云计算的发展,分布式...

    《数据库设计与开发》.rar

    虽然《数据库设计与开发》可能主要集中在关系型数据库,但可能会提及NoSQL数据库的基本概念,如MongoDB的文档型存储、Cassandra的列族模型等,以拓宽读者的视野。 总而言之,《数据库设计与开发》这本书全面地涵盖...

    数据库设计文档.zip

    2. **数据库类型**:关系型数据库(如上述提到的MySQL等)和非关系型数据库(如NoSQL数据库,如MongoDB、Cassandra)是两种主要的数据库类型。关系型数据库基于表结构,非关系型数据库则更加灵活,适合处理大量非...

    数据库系统设计,实现和管理

    概念模型设计通常采用实体-关系(E-R)模型,通过实体、属性和关系来抽象数据。逻辑模型设计则转换为特定数据库管理系统支持的数据模型,如关系模型、对象-关系模型或NoSQL模型。 **实现**阶段涉及将设计模型转化为...

    网页数据库设计圣典资源下载

    "网页数据库设计圣典"这本书很可能涵盖了上述所有方面,并可能深入到更高级的主题,如NoSQL数据库(如MongoDB)、分布式数据库、云数据库服务以及大数据处理。书中可能还会讨论到如何利用ORM(对象关系映射)工具...

    数据库设计资料 db_design

    以及非关系型模型,如NoSQL数据库,适用于大数据处理和分布式系统。资料可能涵盖ER(实体关系)图,用于可视化和定义实体、属性和关系,这是设计关系数据库的关键工具。 其次,正常化是数据库设计的一个关键过程,...

    校友信息管理系统~~~数据库设计.doc

    - 随着技术的发展,出现了多种类型的数据库系统,包括关系型数据库(如SQL Server)、非关系型数据库(NoSQL)等。 - SQL Server是由微软公司开发的一款流行的关系型数据库管理系统,特别是在企业和商业领域中有着...

    第 20 章:数据库设计.zip

    此外,还可能涵盖了关系数据库的扩展,如分布式数据库、NoSQL数据库和数据仓库的设计原则。 通过学习这一章,你可以掌握数据库设计的核心原理,从而在实际项目中创建高效、可靠且易于维护的数据库系统。对于IT专业...

    数据库原理及设计

    8. **NoSQL数据库**: - NoSQL(Not Only SQL):非关系型数据库,适合大数据和高并发场景,如MongoDB、Cassandra等。 通过学习“数据库原理及设计”,你可以掌握如何有效地设计、管理和维护数据库,为各种业务...

Global site tag (gtag.js) - Google Analytics