zoukankan      html  css  js  c++  java
  • 七周七数据库

    北京--西三旗,雨天。。。在周末休息之余也不要忘记学习呀,嘻嘻~

    冲冲冲

    --关系数据库--

    关系数据库管理系统是以集合理论为基础的系统,,实现为具有行和列的二维表。与RDBMS交互的标准方法,是用结构化查询语句编写查询,数据值具有类型,可以是数字、字符串/日期/未解释的二进制大对象,或其他类型。系统强制使用类型。重要的是,表可以联接并转化为新的、更复杂的表,因为它们的数学基础是关系(集合)理论。

    --键-值数据库--

    KV存储库将键与值配对,类似与所有流行编程语言种的映射(或哈希表)。某些KV实现允许复杂的值类型,如哈希或列表,但这不是必需。一些KV实现提供了一种迭代遍历键的方式,但这也是额外的好处。如果你将文件的路径视为键而将文件内容作为值,文件系统也可以看成是键-值存储库。因为KV存储库对资源的要求非常少,所以这种数据库类型在一些场景中有令人难以置信的高性能。,但是当你有复杂的查询和聚合需求,它一般不会有帮助。

    KV的开源存储库有:memcached、Voldemort,以及我们在本书中介绍的两个产品:Redis 和 Riak。

    1、Raik

    支持HTTP和REST等Web方式。它严格实现了亚马逊的Dynamo的原理,具有一些高级功能,如解决冲突的向量时钟。Riak中的值可以是任何内容,从纯文本到XML到图像数据,而键之键的关系由称为链接(link) 的命名结构处理。Riak是本书中知名度较小的数据库,但它越来越受欢迎,在我们将要讨论的数据库中,它是第一个通过mapreduce支持高级查询的数据库。

    2、Redis

    Redis提供复杂的数据库类型,如有序集合和哈希,以及基本消息模式,如发布-订阅和阻塞队列。它是查询机制最健壮的KV存储库之一。再写入磁盘之前先写入内存缓存,Redis因此获得了惊人的性能,代价是在出现硬件故障的情况下,增加了数据丢失的风险。这一特性使得它适合用于缓存非关键字,或作为消息代理。(第8章介绍),以便可以用Redis与其他数据库配合,构建多数据应用。

    --列型数据库--

    又名:面向列的数据库,即来自一个给定的列(在二维表的意义上)的数据存放在一起。相比之下,面向行的数据库(如RDBMS),将一行的信息保存在一起。这种差异看起来似乎无关紧要,但实际上这种设计决策的影响很深。在面向列的数据库中,添加列是相当简易的,而且是逐行完成的。每一行可以有一组不同的列,或完全没有,允许表保持稀疏(sparse),而不会产生空值的存储成本。在结构方面,列表数据库大约介于关系数据库和键-值数据库之间。

    --文档型数据库--

    面向文档的数据库存储的就是文档,简而言之,文档就像哈希,具有一个独一无二的标识符(ID)字段和值,值可能是任何类型,包括更多的哈希。文档可以包含嵌套的结构,因此,它们表现出了高度的灵活性,允许有可变域。该系统对输入的数据很少有限制,只要它满足基本要求,可以表示为一个文档。在建索引、自由定义的查询,复制、一致性及其他设计决策等方面,不同的文档数据库采取了不同方法,需要了解这些差异,及其对特定使用场景的影响,才能在它们之间做出明智地选择。

    --图数据库-- Neo4j

    《《混合使用多种数据

    在实际环境中,各种数据库经常一起使用。使用单一的关系数据库仍然很常见,但随着时间的推移,流行的做法是同时使用几种数据库,利用它们各自的长处,创建一个生态系统,比其各部分的功能总和更强大、更全面、更健壮。这种做法叫做多持久并存(PolyglotPersistence).

    第一天//关系、CRUD和联接

    Postgres:::

    服务进程默认监听5432端口,可以用psql这个命令行工具连接。

         关系代数和SQL

         元组关系演算和SQL

    》使用表

    标识符成为主键(PRIMARY KEY)。

    创建 countries 表的SQL语句如下所示:

      CREATE TAABLE countries (

        country_code char(2) PRIMARY KEY,

        country_name text UNIQUE

      );

    这张新表将存储一些行,其中每一行由两个字节的国家代码作为标识,国家名也是唯一的。这两列都有约束,主键约束country_code 列不允许有重复的国家代码,所以只有一个us和一个gb 可以存在表中,尽管counttry_name不是主键,但是明确地给予country_name类似的唯一性约束。可以用如下语句插入几行来填充这张counties表。

    让我们来测试一下唯一性约束,如果尝试添加包含重复的country_name 的行,就会因为唯一性约束而不允许插入,约束是PostgreSQL这样的关系数据库用来确保数据完整的方法。

  • 相关阅读:
    编程语言的简介
    ava 8 stream的详细用法
    Java 8 Steam 例子整理
    redis常用命令
    常用正则表达式
    保留一些常用文章
    tag的简单使用
    GitFlow详解教程
    Git基本命令和GitFlow工作流
    Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory
  • 原文地址:https://www.cnblogs.com/loliconinvincible/p/13551210.html
Copyright © 2011-2022 走看看