zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

NoSQL数据库

2023-09-14 09:00:01 时间

最近看到Neo4J图形数据库也属于NoSQL,那NoSQL是什么,有几种类型?

NoSQL泛指非关系型的数据库。Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。用于超大规模数据的存储。

优势:

  易扩展

  大数据量高性能

  多样灵活的数据类型

NoSQL数据库主要类型

(1)Key-Value 数据库

  使用键值(key-value)存储的数据库,其数据按照键值对的形式进行组织、索引和存储。

  数据模型:键/值对

    值是一个字符串对象,可以是任意类型的数据

  常见的:Redis,Memcached,Cassandra,LevelDB

  优点:简单、易部署,大量写操作时性能高,查找速度快,扩展性好,灵活性好

  缺点:无法存储结构化信息、条件查询效率较低

  应用:

    主要用于处理大量数据的高访问负载,如:

      频繁读写,拥有简单数据模型的应用

      内容缓存(如会话、配置文件、参数、购物车)

      存储配置和用户信息的移动应用

(2)文档数据库

  面向文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型也可以是复杂的类型。

  文档数据库通常以 JSON 或 XML 格式存储数据。

  数据模型:键/值对

    值是版本化的文档

  常见的:MongoDb,CouchDB

  优点:性能好,灵活性高,复杂性低,数据结构灵活

  缺点:无统一的查询语言  

  应用:

    存储、索引并管理面向文档的数据或类似半结构化数据,如:

      具有大量读写操作的网站

      使用json数据结构的应用

      使用嵌套结构等非规范化数据的应用程序

(3)列式数据库

  以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询

  数据模型:列族

  常见的:HBase,BigTable,Cassandra,HadoopDB

  优点:

    高效的储存空间利用率

    查询效率高(读取多条数据的同一列效率高)

    可扩展性强

    容易做分布式扩展

  缺点:不适合小量数据,功能较少,大都不支持强事务一致性

  应用:

    分布式的文件系统

    拥有潜在大量数据的应用程序

    拥有动态字段的应用程序

    数据在地理上分布于多个数据中心的应用程序

(4)图形数据库

  图数据库允许将数据以图的方式储存。实体会被作为顶点,而实体之间的关系则会被作为边。

  常见的:Neo4J, InfoGrid, Infinite Graph

   优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱

   缺点:

    复杂性高、只能支持一定的数据规模

    不好做分布式的集群方案

  应用:

    用于处理具有高度相互关联关系的数据,如:

      社交网络、模式识别、依赖分析、推荐系统、路径寻找等问题