分享

作为文档型数据库典范,MongoDB有何过人之处

 德威雅 2019-08-16

谈到NoSQL,想必该数据库在整个数据库领域早已名声大噪了。在互联网飞速发展的时代,NoSQL凭借易扩展、成本低和高性能以及灵活的架构模型成功的在数据库领域站稳了脚跟。常见的NoSQL数据库有:Redis、CouchDB、MongoDB、HBase、Cassandra等,今天我们来详细了解下其中一个数据库:MongoDB 的个中奥秘。

什么是MongoDB

想要了解MongoDB的定义,我们不妨从下面三点展开介绍:

1. MongoDB是一款为WEB应用程序和互联网基础设施设计的数据库管理系统,由C语言编写;

2. MongoDB是一款功能丰富的非关系数据库产品,而它强大的语言查询功能又像极了关系数据库产品。由于MongoDB支持的数据库结构十分松散,因此可以存储相对复杂的数据类型;

3. 当数据被分组存储在数据集中我们称之为一个集合,每个集合在数据库内都有对应的标识名,并且能涵盖多个文档,我们可以把集合的概念理解成为关系型数据库里的表。Nytro MegaRAID技术的闪存高速缓存算法能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。MongoDB是用C++开发的面向文档的数据库,没有结构化语言,模式相对自由,也就是说对于存储在MongoDB数据库中的文件,我们完全不需要了解它的结构定义。如果我们想要知道存储在MongoDB中的文件,我们大可以把不同结构的文件存储在同一个数据库里。

MongoDB的优势

综上所述,我们可以了解到MongoDB是一款文档型数据库,在DB Engine Rank 的排名中,MongoDB 排在第4位,是非关系型数据库领域的领头羊。那么,MongoDB有哪些优势能让技术开发者们如此青睐呢?

1. 快速插入、查询:MongoDB具有二维空间索引功能,可以快速并精准的从指定位置获取数据。MongoDB在启动后能将数据库内的数据通过文件映射的方式加载到内存中,此功能可以极大的提高数据库的查询速度。且MongoDB可以更高写负载,拥有极高的插入速度。所以,MongoDB特别适用于网站数据相关行业;

2. 操作方便:由于MongoDB是一个面向文档存储的数据库,其中的BSON数据格式非常适合文档的存储及查询,操作起来十分简单,可疑加快实现价值的时间,大大缩小总体成本,应用于对象及JSON数据的存储是一个不错的选择;

3. 数据模型灵活:Mongo查询指令使用JSON形式的标记,文档模型映射到应用程序代码中的对象,使数据方便使用,各项功能正常工作,无论是文档、图形还是事件都能因Mongo灵活的数据模型实行轻松存储和合并结构数据,并允许动态修改架构,而不会造成停机或性能影响,我们完全可以花更少时间为数据库做准备;

4. 分布式数据平台:MongoDB可以在分布在不同位置的数据中心和云区域内运行,从而提供具有更高级别的可用性和伸缩性。在没有停机的情况下,MongoDB能够进行弹性扩展,随着性能和目标发展,我们还可以跨越数据中心进行适应性的调整,因此众多高伸缩性场景选用MongoDB;

5. 多语言支持:MongoDB支持多种编程语言,比如RUBY,PYTHON,JAVA,PHP,C#,C++等。

MongoDB在TitanFramework中的应用

在TitanFramework中,已经集成了MongoDB的各个功能,现在我们带着上述对MongoDB的了解来认识TitanFramework:

1. MongoDBConverter

在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作为框架对MongoDB数据Bson的一个转换器,其实现类是一个名字被加密的类(Titan框架中加密了部分内部类和实现类代码,反编译是看不到真实名字的,这样无法通过反编译获取其他实现类的源码),实现该接口的功能。

这里我们来了解TitanFramework应用MongoDB的三个方法,其中重载了一个toEntity(), T toEntity(Document var1)该方法直接返回null,为一个默认方法,而 T toEntity(Document var1, Class var2)是将一个Document(MongoDB中的一条数据)转换为对应的Entity,最后一个方法 Document toDocument(T var1)则是将传入的Entity转换为Document。

内部运行时异常类ConvertException,用于转换异常时抛出提示。

2. GeneraMongodb

GeneraMongodb是一个非常重要的框架内的顶层接口,它规定了许多操作方法,如增删改查,获取、设置自定义实现的转换器,统计条目等。

框架内部规定了一个Curd和一个Finder内部接口,并已经使用抽象类进行初始化好,用以对实现的类初始化增删改查功能。

框架内部还拥有一个已经实现了该接口的抽象类,抽象类实现了一个完整的GeneraMongodb接口,包括实现了一个初始化默认的转换器Convertor,抽象类内部提供了(非使用或实现Curd和Finder对象)增删改查功能。

3. MongoDataProcessor

这个接口是我们在使用Titan Framework Mongo服务中,respository需要实现的StorageDataProcessor.Mongo内Mongo公共接口所继承的顶级接口,该接口提供了我们平时使用的方法。

很明显,这个顶级接口的作用就是给我们提供平时操作使用Curd()和readonly()方法,并提供一个获取默认转换器的extConverter()方法,而默认转换器则是由框架内某实现了MongoDBConverter的实现类提供。

MongoDB将非关系数据库的关键功能与NoSQL技术高效结合,历经数十年的发展中MongoDB的关键数据库功能与互联网开拓者为现代应用程序提供众多服务,并在开发者构建的新一代应用程序中提供重要功能。而TitanFramework通过完美应用MongoDB,具有“本地化,易上手,效率高,低成本”的优势,帮助中国万千家企业攻克了技术难题。如果您的企业正在面临技术级难题,TitanFramework必然会是一个理想的选择。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多