Docker数据库缓存镜像容器相关地址及知识汇总

1. Docker MongoDB

  • MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
  • MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
  • MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
  • MongoDB存储的数据格式类似于JSON的格式bson。
  • 不适用的场景如下:
1)要求高度事务性的系统。
2)传统的商业智能应用。
3)复杂的跨文档(表)级联查询。
  • 数据模型:
1)一个MongoDB 实例可以包含一组数据库,一个DataBase 可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组field(字段),每一个字段都是一个key/value pair。
2)key: 必须为字符串类型。
3)value:可以包含如下类型。
● 基本类型,例如,string,int,float,timestamp,binary 等类型。
● 一个document。
● 数组类型。
  • 相关链接:
1)镜像库地址:https://hub.docker.com/_/mongo?tab=tags&page=1
2)取最新版的 MongoDB 镜像: docker pull mongo:latest
3)MongoDB 官网地址:https://www.mongodb.com/
4)MongoDB 官方英文文档:https://docs.mongodb.com/manual/
5)MongoDB 各平台下载地址:https://www.mongodb.com/download-center#community
6)mongoDB runoob 教程地址:https://www.runoob.com/mongodb/mongodb-tutorial.html
7)PHP 安装 mongoDB 扩展教程地址:https://www.runoob.com/mongodb/mongodb-install-php-driver.html
8)php mongoDB 扩展文件地址:http://pecl.php.net/package/mongodb

2. Docker Redis

  • REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
  • Redis 是一个完全开源免费的使用 ANSI C 语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 的 NoSQL 数据库,并提供多种语言的 API。
  • 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
  • Redis 与其他 key - value 缓存产品有以下三个特点:
1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3)Redis支持数据的备份,即master-slave模式的数据备份。
  • Reids 的优势:
1)性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2)丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类操作。
3)原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
4)丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
  • Redis与其他key-value存储有什么不同?
1)Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
2)Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
  • 需要了解:
    1)这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
    2)Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
    3)Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
  • 数据模型:
1)String: 字符串,string是最简单的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
2)Hash: 散列(哈希),键、值都为字符串的哈希表
3)List: 列表((双向链表),list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
4)Set: 集合,set和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
5)Sorted Set: 有序集合,zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
  • 相关地址:
1)镜像库地址: https://hub.docker.com/_/redis?tab=tags
2)取最新版的 Redis 镜像:docker pull redis:latest
3)官网地址:https://redis.io
4)Redis runoob 教程:https://www.runoob.com/redis/redis-tutorial.html
5)PHP 安装 redis 扩展教程:https://www.runoob.com/redis/redis-php.html
6)php Redis扩展文件 地址:https://github.com/phpredis/phpredis/releases

其他相关:

  • NoSQL介绍: https://www.runoob.com/mongodb/nosql.html
  • Redis–Memched–Cache缓存介绍使用:https://www.cnblogs.com/hulizhong/p/10776203.html
  • 关系型数据库遵循ACID规则
1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
  • 分布式系统
1)分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。2)分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。
因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。
3)分布式系统可以应用在不同的平台上如:Pc、工作站、局域网和广域网上等。
  • 分布式计算的优点
1)可靠性(容错) :分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。  
2)可扩展性:在分布式计算系统可以根据需要增加更多的机器。
3)资源共享:共享数据是必不可少的应用,如银行,预订系统。
4)灵活性:由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。
5)更快的速度:分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。
6)开放系统:由于它是开放的系统,本地或者远程都可以访问到该服务。
7)更高的性能:相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。
  • 分布式计算的缺点
1)故障排除:故障排除和诊断问题。
2)软件:更少的软件支持是分布式计算系统的主要缺点。
3)网络:网络基础设施的问题,包括:传输问题,高负载,信息丢失等。
4)安全性:开放系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章