存储服务器

第1章 MySQL架构与历史

余生长醉 提交于 2020-02-09 19:54:34
MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式 1.1 MySQL逻辑架构 最上层服务大多数系统都有,连接处理、授权认证、安全等等 第二层包含MySQL的大多数核心功能 第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取 1.1.1 连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。 当客户端连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。如果使用了 安全套接字 SSL)的方式连接,还可以使用X.059证书认证。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限(例如,是否允许客户端对world数据库的Country表执行SELECT语句)。 1.1.2 优化与执行 MySQL会解析查询,并创建内部数据结构,然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。 对于SELECT语句,在解析查询之前

如何在PHP中保护数据库密码?

北战南征 提交于 2020-02-09 14:22:46
当 PHP 应用程序建立数据库连接时,通常当然需要传递登录名和密码。 如果我为我的应用程序使用单个最小权限登录名,则PHP需要在某个地方知道该登录名和密码。 保护该密码的最佳方法是什么? 似乎只在PHP代码中编写它不是一个好主意。 #1楼 另一个技巧是使用一个如下所示的PHP单独的配置文件: <?php exit() ?> [...] Plain text data including password 这不会阻止您正确设置访问规则。 但是,如果您的网站被黑,“ require”或“ include”将仅在第一行退出脚本,因此更难以获取数据。 但是,永远不要将配置文件放在可以通过Web访问的目录中。 您应该有一个“ Web”文件夹,其中包含您的控制器代码,css,图片和js。 就这样。 脱机文件夹中还有其他内容。 #2楼 最安全的方法是完全不使用PHP代码中指定的信息。 如果使用Apache,则意味着在httpd.conf或虚拟主机文件文件中设置连接详细信息。 如果这样做,则可以不带任何参数调用mysql_connect(),这意味着PHP将永远不会输出您的信息。 这是您在这些文件中指定这些值的方式: php_value mysql.default.user myusername php_value mysql.default.password mypassword php

Kafka 消息队列系列之分布式消息队列Kafka

▼魔方 西西 提交于 2020-02-07 00:17:54
介绍 ApacheKafka®是一个分布式流媒体平台。这到底是什么意思呢? 我们认为流媒体平台具有三个关键功能: 它可以让你发布和订阅记录流。在这方面,它类似于消​​息队列或企业消息传递系统。它允许您以容错方式存储记录流。它可以让您在发生记录时处理记录流。什么是卡夫卡好? 它被用于两大类的应用程序: 构建可在系统或应用程序之间可靠获取数据的实时流数据管道构建实时流应用程序,可以转换或响应数据流要了解卡夫卡如何做这些事情,让我们深入探索卡夫卡的能力。 首先几个概念: Kafka作为一个或多个服务器上的集群运行。Kafka集群以称为主题的类别存储记录流。每个记录由一个键,一个值和一个时间戳组成。卡夫卡有四个核心API: 该制片API允许应用程序发布的记录流至一个或多个卡夫卡的话题。该消费者API允许应用程序订阅一个或多个主题,并处理所产生的对他们记录的数据流。所述流API允许应用程序充当流处理器,从一个或多个主题消耗的输入流,并产生一个输出流至一个或多个输出的主题,有效地变换所述输入流,以输出流。该连接器API允许构建和运行卡夫卡主题连接到现有的应用程序或数据系统中重用生产者或消费者。例如,连接到关系数据库的连接器可能会捕获对表的每个更改。 在Kafka中,客户端和服务器之间的通信是通过一个简单的,高性能的,与语言无关的TCP协议完成的。这个协议是版本化的,并保持与旧版本的向后兼容性

数据库 -- 存储引擎介绍

孤人 提交于 2020-02-05 06:13:48
mysql引擎介绍 1,概念   mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 mysql支持的存储引擎 MySQL服务器采用了多层设计和独立模块,插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中,图中的Pluggable Storage Engines部分。采用MySQL服务器体系结构,由于在存储级别上(也就是Pluggable Storage Engines)提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。存储引擎就司职与文件系统打交道了。 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。 引用完整性:通过DDL定义的外键,服务器需要强制保持关联数据库的引用完整性。 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。 索引支持

块存储、文件存储、对象存储这三者的本质差别是什么?

时光毁灭记忆、已成空白 提交于 2020-02-05 00:44:30
【块存储】 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了。例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。) 接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是区分不出到底是逻辑还是物理的,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没有区别的,至少操作系统感知上没有区别。 此种方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置硬盘的方式完全无异。 优点: 1、 这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护。 2、 另外也可以将多块廉价的硬盘组合起来,成为一个大容量的逻辑盘对外提供服务,提高了容量。 3、 写入数据的时候,由于是多块磁盘组合出来的逻辑盘,所以几块磁盘可以并行写入的,提升了读写效率。 4、 很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因

MySQL

a 夏天 提交于 2020-02-02 09:30:47
一、索引 B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化 使用 Explain 进行分析 优化数据访问 重构查询方式 三、存储引擎 InnoDB MyISAM 比较 四、数据类型 整型 浮点数 字符串 时间和日期 五、切分 水平切分 垂直切分 Sharding 策略 Sharding 存在的问题 六、复制 主从复制 读写分离 参考资料 一、索引 B+ Tree 原理 1. 数据结构 B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。 B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 key i 和 key i+1 ,且不为 null,则该指针指向节点的所有 key 大于等于 key i 且小于等于 key i+1 。 2. 操作 进行查找操作时,首先在根节点进行二分查找,找到一个 key 所在的指针,然后递归地在指针所指向的节点进行查找。直到查找到叶子节点,然后在叶子节点上进行二分查找,找出 key 所对应的 data。 插入删除操作会破坏平衡树的平衡性,因此在插入删除操作之后

块存储、对象存储、文件存储的联系和区别

心已入冬 提交于 2020-01-30 14:22:55
块存储、对象存储、文件存储的联系和区别 通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。 \1. 块存储:DAS SAN a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。 应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。 b) SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。 应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。 \2. 文件存储 通常NAS产品都是文件级存储。 NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。 它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好

FastFDS 分布式文件系统

我的未来我决定 提交于 2020-01-30 07:58:33
FastFDS 分布式文件系统 底下附服务器搭建 介绍 FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。在UC基于FastDFS开发向用户提供了:网盘,社区,广告和应用下载等业务的存储服务。 FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。 FastDFS特性 : 文件不分块存储,上传的文件和OS文件系统中的文件一一对应 支持相同内容的文件只保存一份,节约磁盘空间 下载文件支持HTTP协议,可以使用内置Web Server,也可以和其他Web Server配合使用 支持在线扩容 支持主从文件 存储服务器上可以保存文件属性(meta-data)V2.0网络通信采用libevent,支持大并发访问,整体性能更好 服务器: Tracker相当于FastDFS的大脑

MongoDB快速入门

泪湿孤枕 提交于 2020-01-25 16:36:07
从我第一次听到Nosql这个概念到如今已经走过4个年头了,但仍然没有具体的去做过相应的实践。最近获得一段学习休息时间,购买了Nosql技术实践一书,正在慢慢的学习。在主流观点中,Nosql大体分为4类, 键值存储数据库,列存储数据库,文档型数据库,图形数据库 。 今天主要快速的浏览了文档型数据库中目前市场占有率的最高的MongoDB数据库。记得初次见到和关注这个数据库还是我刚来上海的时候,公司将该数据库作 为新建的项目管理系统的后台数据库,当时还是很向往的,只是无缘参与那个项目,也就一直没有和该数据库打上交道。接下来简单的介绍下该数据库的基本原理和 相关应用,也算是巩固知识和加强记忆了。大体上快速学习分为两部分,第一部分为基础,第二部分为进阶。 优势与不足    首 先,MongoDB不需要表结构,它是模式自由的(schema-free),例如{"welcome", "Shanghai"}, {"name", "bibi"}可以放到同一个集合中。那么它是如何在存储数据的呢?MongoDB在保存数据时会使用Bson的形式,一种json的二进制化形式,并把 它与特定的Key进行关联。这样将非常便于程的扩展和维护,在需要增加新字段或者修改字段时只需要修改程序,而不需要修改数据库的架构,非常的方便。   其 次,MongoDB原生的提供很强的伸缩性,对于web应用

Flask框架之session

…衆ロ難τιáo~ 提交于 2020-01-25 10:47:28
session基本概念 session 技术也叫会话技术。 session 和 cookie 的作用有点类似,都是为了存储用户相关的信息,都是为了解决 http 协议无状态的这个特点。 不同的是, cookie 信息是存储在客户端,而 session 信息是存储在服务器端。 需要注意的是,不同的语言,不同的框架,有不同的实现。 虽然底层的实现不完全一样,但目的都是让服务器端能方便的存储数据而产生的。 session 的出现,是为了解决 cookie 存储数据不安全的问题的。 session的跟踪机制与cookie有关 Flask 框架中, session 的跟踪机制跟 Cookie 有关,这也就意味着脱离了 Cookie , session 就不好使了。 session工作过程: 服务器端可以采用类似于 mysql 、 redis 等技术来存储 session 信息。 原理是,客户端发送验证信息过来(比如用户名和密码),服务器验证成功后,把用户的相关信息存储到服务器端的 session 中(可想象为一个容器),再通过 盐 的机制, 盐 起到混淆原数据的作用(类似于 加密 ),然后随机生成一个唯一的 session_id ,用来标识(用户名和密码)并存储到 session 中,之后再把这个 session_id 存储到cookie中返回给浏览器。 浏览器以后再请求我们服务器的时候