`
szlzhm
  • 浏览: 15819 次
社区版块
存档分类
最新评论

共享下MongoDB子对象搜索性能测试数据

阅读更多
   MongoDB支持索引,一个集合上可以创建唯一、非唯一索引,可以建立几个索引。可以将多列组合起来做成复合索引。通过索引检索数据性能很好,如果没有索引进行检索,会导致全集合的扫描,性能很差。即使他是内存数据库。

    由于我最近的项目上需要子对象集合,需要对其进行检索为此针对此进行了一次验证。这里将验证的结果共享给大家。 
    集合样例:
     {gid:"sadfasdfadsfasdf",gList:[{gtag:"asdfasdf"},{gtag:"yyjsdhfg"},{gtag:"dfsdf8899"},gtype:"abc"}
    其中gid是全局唯一的,gtype总共只有7个值。gList里面的子集合(子对象)的个数是随机的,个数范围在3到200之间。其中只有5000条数据有gtag,其他数据没有gtag。
     分别有三个应用,第一个应用需要按照gid检索数据,第二个应用需要通过gtag检索数据,第三个应用通过gtype检索数据。
     为了获得性能,需要做一个测试。为了得到的数据接近实际情况,我将生产系统的数据拿来做测试。考虑到32位mongodb处理的数据条目可字节数的限制,灌入120万条数据,再多的数据会导致mongodb无法简历索引,mongoDB不可用。
    为了测试其性能,首先进行一次全集合的遍历,将所有的数据读入内存。测试情况如下:

1、 分别就gid、gtag、gtype建立索引,进行检索。每个业务执行10万次。返回结果集中第一条数据。
     得到结果:
      检索gid业务消耗时间平均为0.6毫秒 ,检索gtype业务消耗时间平均为1.3毫秒,检索gTag业务消耗时间为7毫秒
2、返回列对性能的影响
    返回的列数、列的复杂度、以及每行的字节数会影响到性能。越复杂的列、列数越多、返回的字节数越多,消耗时间越多。
 
由于时间关系,没有进行分页业务的性能的测试。
   
分享到:
评论

相关推荐

    MongoDB环境下GML云存储构建

    MongoDB提供了强大的索引功能来提升数据查询效率,可以针对文档的特定字段或子字段创建索引。在存储GML数据时,应该根据数据访问模式来设计合理的索引策略,例如可以为地理位置信息建立地理空间索引,以便于执行高效...

    基于springboot的共享汽车管理系统源码数据库.zip

    同时,系统可能还集成了Redis或MongoDB等NoSQL数据库来处理高并发场景下的缓存和非结构化数据存储。此外,为了保证安全性,项目可能使用了Spring Security或Shiro进行权限管理和认证。 总之,这个项目是一个全面的...

    图书管理系统详解ppt

    可能还会涉及到性能测试,确保系统在高并发情况下仍能稳定运行。 最后,PPT可能会涉及系统的部署和维护,包括服务器配置、系统上线后的监控以及版本控制。此外,用户培训和后期支持也是系统成功实施的重要部分。 ...

    Hibernate电子版及源码

    3. 第二级缓存:Hibernate支持使用缓存提高性能,其中一级缓存是每个Session内部的私有缓存,二级缓存则可跨Session共享,通常结合第三方缓存系统如 Ehcache 使用。 4. HQL(Hibernate Query Language):HQL是...

    基于Golang框架的在线读书社区源码.zip

    - 在线读书社区可能涉及到用户信息、书籍数据、阅读历史等多种数据的存储,因此会与MySQL、MongoDB或其他NoSQL数据库进行交互。ORM(对象关系映射)工具如Gorm或sqlx可能被用来简化数据库操作。 5. **模板引擎** ...

    linux系统与数据库视频教程学习合集(软件测试必备知识)

    - `/usr`:存放用户共享数据; - `/var`:存放可变数据; - `/etc`:存放配置文件。 ### 基础命令操作 #### cd 命令 用于切换当前工作目录。 - **语法**:`cd [目录]` - **示例**:`cd /usr/local` #### ls ...

    Go语言博客实践.zip

    7. **测试**:Go语言内置了测试框架,允许编写单元测试和基准测试,以确保代码质量和性能。 8. **反射与类型断言**:反射机制让Go语言在运行时能获取类型信息,类型断言则用于确定接口值的具体类型。 9. **Go汇编*...

    BBS问答社区程序使用说明.zip

    常见的数据库选择包括MySQL、PostgreSQL或MongoDB,这些数据库系统都提供了Java驱动,方便进行数据操作。 7. 安全性与性能优化 为保障用户数据的安全,程序需要实现安全的用户认证和授权机制,如使用HTTPS协议、...

    whiteboard-server-源码.rar

    这可能涉及到SQL或NoSQL数据库,如MySQL、MongoDB等,以及相关的ORM(对象关系映射)库。 6. **安全性**:考虑到数据的敏感性,whiteboard-server应包含安全措施,如身份验证、授权和数据加密。可能用到的技术包括...

    25-Node.js开发指南_nodejs_开发_

    Node.js可以与各种数据库(如MongoDB、MySQL、PostgreSQL等)进行交互,通过相应的数据库驱动实现数据的CRUD操作。理解SQL语句和NoSQL的概念,掌握Mongoose、Sequelize等ORM工具的使用是必要的。 **10. 测试与调试*...

    软件仓库:用于在Web应用程序中存储文件和附件的工具包

    5. **GridFS**:这是MongoDB的一个子系统,用于存储和检索大型文件,当单个文档大小超过MongoDB的限制时使用。 6. **File-upload**:表明工具包包含处理文件上传的功能,可能包括验证、处理和存储上传的文件。 7. **...

    Spring框架入门教程,助你快速掌握核心概念

    这样,对象无需自己创建或查找依赖,而是由Spring容器在初始化时注入,增强了代码的可测试性和可维护性。 三、控制反转(IOC) 控制反转是DI的一种更抽象的表述,它意味着应用程序的控制权由对象本身转移到了外部...

    asher-master.zip

    查看tests目录下的测试用例,我们可以了解项目的测试覆盖率,以及所采用的测试框架和方法,如单元测试、集成测试等。 7. **文档与注释**:优秀的开源项目通常会提供详尽的文档,帮助用户理解和使用。阅读README文件...

    mongoose_clone:猫鼬中间件的克隆功能

    Mongoose 是一个流行的对象数据模型(ODM)框架,用于在 Node.js 中与 MongoDB 数据库进行交互。`mongoose_clone` 的主要功能是提供对 Mongoose 模型对象的克隆能力,这对于处理复杂的数据库操作,尤其是需要复制和...

    Node.js-Node.js开源论坛与聊天室

    - **MongoDB/Mongoose**: 非关系型数据库MongoDB的Node.js驱动,Mongoose是其对象数据模型库,用于数据操作和验证。 - **WebSocket**: 实现双向通信的协议,如ws和socket.io库,常用于实时应用如聊天室。 7. **...

    Go 零基础编程入门教程.pdf

    - **Channel**:用于Goroutine间通信,实现数据共享和同步。 **7. 锁的使用** Go语言提供互斥锁(`sync.Mutex`)和读写锁(`sync.RWMutex`)来保护共享资源,确保并发安全。 **8. 原子操作** `sync/atomic`包提供...

    nodejs入门详解(多篇文章结合).docx

    8. **数据库集成**:Node.js 可以与多种数据库系统集成,如 MongoDB、MySQL、PostgreSQL 等,通过 ORM(对象关系映射)库如 Sequelize 或 Mongoose 提供更方便的操作接口。 9. **模板引擎**:如 EJS、Pug(原 Jade...

    Project-EHR:项目 EHR,尝试创建基于标准的 EHR

    - **面向对象设计**:Java的面向对象特性便于实现复杂的业务逻辑和数据模型,如患者对象、医生对象等。 **3. 标准化与互操作性** 项目EHR强调基于标准构建,这主要体现在以下几个方面: - **HL7标准**:Health ...

    软考高项知识点速记口诀汇总

    - “调用/返回风格:调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。” - “独立构件风格:独立构件风格包括进程通信和事件驱动的系统。” - “虚拟机风格:虚拟机风格包括解释器和基于规则...

    Vaccines

    10. **测试与质量保证**:包括单元测试、集成测试和性能测试,确保系统的稳定性和可靠性。 11. **持续集成/持续部署(CI/CD)**:利用Jenkins或GitLab CI/CD等工具自动化构建、测试和部署过程,提高开发效率。 这个...

Global site tag (gtag.js) - Google Analytics