商务网站建设用的是什么软件,淘宝官网首页手机版,网站出现500,网页界面设计系统1.1 什么是MongoDB#xff1f;
MongoDB是一个可扩展、开源、表结构自由、用C语言编写且面向文档的数据库#xff0c;旨在为Web应用程序提供高性能、高可用性且易扩展的数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品#xff0c;是非关系数据库当…
1.1 什么是MongoDB
MongoDB是一个可扩展、开源、表结构自由、用C语言编写且面向文档的数据库旨在为Web应用程序提供高性能、高可用性且易扩展的数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品是非关系数据库当中 功能最丰富、最像关系数据库的NoSQL数据库它支持的查询语言非常强大其语法有 点类似于面向对象的查询语言可以实现类似关系数据里单表查询的绝大部分功能而且还支持对数据建立索引。
1.2 MongoDB特点 它用与JSON格式类似的键值对来存储在MongoDB中叫BSON对象)其中值的数据类型有常见的字符串、数字、日期还可以是BSON对象、数组以及数组的元素也可以是BSON对象通过这种嵌套的方式使MongoDB的数据类型变得相当丰富。 MongoDB与传统关系数据库还有一个重大区别就是可扩展的表结构。也就是说collection (表中的document (—行记录所拥有的字段列是可以变化的下面文档对象document ( —行记录比上面列出的文档对象document (—行记录多一个time字段但它们可以共存在同一个collection (表中。 db.movies.find()
{ _id : ObjectId(65a8e26baa7aec49b06f7918), title : The Favourite, genres : [ Drama, History ], runtime : 121, rated : R, year : 2018, directors : [ Yorgos Lanthimos ], cast : [ Olivia Colman, Emma Stone, Rachel Weisz ], type : movie }
{ _id : ObjectId(65a8e29caa7aec49b06f7919), title : Jurassic World: Fallen Kingdom, genres : [ Action, Sci-Fi ], runtime : 130, rated : PG-13, year : 2018, directors : [ J. A. Bayona ], cast : [ Chris Pratt, Bryce Dallas Howard, Rafe Spall ], type : movie }
{ _id : ObjectId(65a8e931aa7aec49b06f791b), title : Jurassic World: Fallen Kingdom, genres : [ Action, Sci-Fi ], runtime : 130, rated : PG-13, year : 2018, directors : [ J. A. Bayona ], cast : [ Chris Pratt, Bryce Dallas Howard, Rafe Spall ], type : movie }
{ _id : ObjectId(65a92e692725916a6012a44e), title : Jurassic World: Fallen Kingdom, genres : [ Action, Sci-Fi ], runtime : 130, rated : PG-13, year : 2018, directors : [ J. A. Bayona ], cast : [ Chris Pratt, Bryce Dallas Howard, Rafe Spall ], type : movie, time : 2024-01-18 }MongoDB查询语句不是按照SQL的标准来开发的它围绕JSON这种特殊格式的文 档型存储模型开发了一套自己的查询体系这就是现在非常流行的NoSQL体系。关系数据库中常用的SQL语句在MongoDB中都有对应的解决方案。当然也有例外MongoDB不支持Join语句。我们知道传统关系数据库中Join操作可能会产生笛卡尔积的虚拟表消耗较多系统资源而MongoDB的文档对象集合collection可以是任何结构我们可以通过设计较好的数据模型尽量避开这样的操作需求。如果真的需要从多个collection (表中检索数据那我们可以通过多次查询得到。 在关系数据库中经常用到的group by等分组聚集函数在MongoDB中也有而且MongoDB提供了更加强大的MapReduce方案GOOGLE提出的并行编程)为海量数据的统计、分析提供了便利。 MongoDB支持日志功能Journaling,对数据库的增、删、改操作会记录在日志文件中。MongoDB每100ms将内存中的数据刷到磁盘上如果意外停机在数据库重新启动时MongoDB能通过Journaling日志功能恢复。 MongoDB支持复制集Replset), —个复制集在生产环境中最少需要3台独立的机器 (测试的时候为了方便可能都部署在一台机器上)一台作主节点primary), —台作次节点secondary), —台作仲裁节点只负责选出主节点)备份、自动故障转移这些特性都是复制集支持的。 MongoDB支持自动分片Sharding,分片的功能实现海量数据的分布式存储分片通常与复制集配合起来使用实现读写分离、负载均衡当然如何选择片键是实现分片功能的关键。如何实现读写分离我们后面会详细分析。
1.3. 适合哪些业务
Web应用程序 传统的关系数据库表结构都是固定的增加一个业务或者横向扩展数据库都会带来 巨大的工作量。MongoDB支持无固定结构的表模型因此很容易增加或减少表中的字段,适应业务的变化同时MongoDB本身就支持分片集群很容易实现水平扩展将数据分散到集群中的各个片上提高了系统的存储容量和读写吞吐量。Web应用程序还有一个特点就是“热数据”读并发很高也就是说最新的数据被请求的次数会最多。 为了提供读的性能在传统的关系数据将中会采用其他的缓存技术来将这部分数据放在内存中而MongoDB本身就支持这一点它是通过内存映射数据文件来实现的。它会维护一个工作集将最热的数据放在内存中不需要其他技术的协助这为系统开发提供了简便性。 2.缓存系统 这种使用场景是与关系数据库搭配使用作为关系数据库的缓存前端。目前缓存技术有很多种最常见的就是使用memcached但是这些缓存系统都有个缺点就是支持的数据类型有限查询语句也有限只能保存少量的数据且不能持久化。而MongoDB这些都能支持因此可以作为缓存使用。 3.日志分析系统 这类系统的特点是数据量大允许部分数据丢失不会影响整个系统的可靠性。以前将日志直接保存到操作系统的文件上我们需要用其他工具打开日志文件或编写工具读曰志进行分析这样的话对于大量的日志查询会比较困难。如果用MongoDB数据库来保存这些日志一来可以利用分片集群使日志系统的容量海量大二来使用MongoDB特有的查询语句自酿快速找到某条日志记录。最重要的是MongoDB支持聚集分析甚至MapReduce的能力为大数据的分析和决策提供了强有力的支持。
1.4 总结
MongoDB是一个面向文档的数据库不支持关系数据库中的join操作和事务。它用集合的概念代替了关系数据库中的表用最小逻辑单元文档代替关系数据库中的行。它的集合结构是动态的没有必要像关系数据库一样插入数据前先定义表结构而且可以随时増加、修改、删除组成文档的字段。 MongoDB支持当前所有主流编程语言的客户端驱动使用方便应用广泛非常适合文档管理系统的应用、移动APP应用、游戏开发、电子商务应用、分析决策系统、归档和曰志系统等应用。