数据储存的形式
(1)文件
(2)关系型数据库(mysql, oracle)—结构化存储(结构化数据,引入numpy,pandas)
(3)非关系型数据库(redis, mongodb)
(4)图片服务器(均匀小块存储 block)
(5)HDFS(大块存储,64M block) — 非结构化,数据分布式全量存储
(6)视频服务器(几百兆 block)
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
数据持久化: 数据永久保存
存储介质:文件(txt, word, excel, csv), 关系型数据库
SQL SERVER, MYSQL, ORACLE
关系型数据库层次:
(1)数据库引擎(由底层C语言封装的操作库,表,管理等操作)
mysql引擎:InnoDB(行级锁,插入速度快,支持事务), MyISAM(表级锁,查询速度快快)
线上一般都采用InnoDB引擎存储。
(2)引擎提供上层可调用SQL API接口
复合SQL-98标准规范
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
mysql产生几个企业版本:Percona Server, MariaDB
MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
优点:
MySQL 是开源的,所以你不需要支付额外的费用。
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL 使用标准的SQL数据语言形式。
MySQL 对Python等语言有很好的支持.
MySQL数据库引擎:
(1)MyISAM
表级锁引擎,查询速度很快,但是处理效率低
(2)InnoDB
行级锁引擎,支持事务,一般线上mysql数据库都是采用这种引擎。
Ubuntu 16.04下安装MySQL的过程:
首先执行下面三条命令:
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
安装成功后可以通过下面的命令测试是否安装成功:
sudo netstat -tap | grep mysql ( or sudo netstat -anp | grep mysql )
出现如下信息证明安装成功:
sudo netstat -tap | grep mysql [sudo] password for zhouguangyou: tcp 0 0 *:mysql *:* LISTEN 1146/mysqld
可以通过如下命令进入MySQL服务:
mysql -u root -p 你的密码
如何进行远程访问mysql?
现在设置mysql允许远程访问,首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1:修改为: bind-address=0.0.0.0
如何对创建新用户并设置访问权限?
最好以超级root用户进行权限分配
grant all on *.* to zhougy@'%' identified by '123456' with grant option; flush privileges;
上述信息可以根据自身的情况进行修改定制。(创建新用户zhougy,赋予所有权限,且远程能访问)
重新启动下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
重新连接mysql
mysql -u root -h 你的mysql数据库IP地址 -p 你的密码
创建数据库db_name, 并设置字符编码为utf8
mysql> create database db_name CHARACTER SET utf8;
附:
编码问题,导致无法输入中文。
安装MySQL数据库时的默认编码是latin1。
如果我们进入Add按钮添加相关信息,如果输入的是英文,没有问题,如果输入的是中文,则会出现异常错误。如下:
InternalError at /admin/app/school/add/ (1366, "Incorrect string value: '\\xE6\\xB8\\x85\\xE5\\x8D\\x8E...' for column 'sname' at row 1")
出现此类错误原因:数据库mysql字符编码问题,需要改成utf-8
Questions: 修改mysql数据库默认编码
查看MySQL当前数据库的默认编码:
mysql> status; -------------- mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper Connection id: 3 Current database: hello_django Current user: django@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 2 hours 18 min 45 sec
发现编码方式是latin1
需要改成utf-8
解决方案:
(1)修改MySQL的配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf 中追加
[mysqld]character-set-server=utf8
[client]default-character-set=utf8
[mysql]default-character-set=utf8
重新启动下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
改变后,之前手工创建的数据库如未显式指定编码,则其编码仍是默认的latin1,可使用如下命令更改编码:mysql> create database db_name CHARACTER SET utf8;
好了,再次使用如下命令查看编码方式:
mysql> show variables like 'character_set_database';
mysql> status;
都改成了utf-8
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
修改编码格式成功!
参考的文档:
http://www.runoob.com/mysql/mysql-install.html
存储数据?
(1)文件
(2)关系型数据库(mysql, oracle)—结构化存储(结构化数据,引入numpy,pandas)
(3)非关系型数据库(redis, mongodb)
(4)图片服务器(均匀小块存储 block)
(5)HDFS(大块存储,64M block) — 非结构化,数据分布式全量存储
(6)视频服务器(几百兆 block)
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
数据持久化: 数据永久保存
存储介质:文件(txt, word, excel, csv), 关系型数据库
SQL SERVER, MYSQL, ORACLE
关系型数据库层次:
(1)数据库引擎(由底层C语言封装的操作库,表,管理等操作)
mysql引擎:InnoDB(行级锁,插入速度快,支持事务), MyISAM(表级锁,查询速度快快)
线上一般都采用InnoDB引擎存储。
(2)引擎提供上层可调用SQL API接口
复合SQL-98标准规范
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
mysql产生几个企业版本:Percona Server, MariaDB
MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
优点:
MySQL 是开源的,所以你不需要支付额外的费用。
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL 使用标准的SQL数据语言形式。
MySQL 对Python等语言有很好的支持.
MySQL数据库引擎:
(1)MyISAM
表级锁引擎,查询速度很快,但是处理效率低
(2)InnoDB
行级锁引擎,支持事务,一般线上mysql数据库都是采用这种引擎。
Ubuntu 16.04下安装MySQL的过程:
首先执行下面三条命令:
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
安装成功后可以通过下面的命令测试是否安装成功:
sudo netstat -tap | grep mysql ( or sudo netstat -anp | grep mysql )
出现如下信息证明安装成功:
sudo netstat -tap | grep mysql [sudo] password for zhouguangyou: tcp 0 0 *:mysql *:* LISTEN 1146/mysqld
可以通过如下命令进入MySQL服务:
mysql -u root -p 你的密码
如何进行远程访问mysql?
现在设置mysql允许远程访问,首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1:修改为: bind-address=0.0.0.0
如何对创建新用户并设置访问权限?
最好以超级root用户进行权限分配
grant all on *.* to zhougy@'%' identified by '123456' with grant option; flush privileges;
上述信息可以根据自身的情况进行修改定制。(创建新用户zhougy,赋予所有权限,且远程能访问)
重新启动下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
重新连接mysql
mysql -u root -h 你的mysql数据库IP地址 -p 你的密码
创建数据库db_name, 并设置字符编码为utf8
mysql> create database db_name CHARACTER SET utf8;
附:
编码问题,导致无法输入中文。
安装MySQL数据库时的默认编码是latin1。
如果我们进入Add按钮添加相关信息,如果输入的是英文,没有问题,如果输入的是中文,则会出现异常错误。如下:
InternalError at /admin/app/school/add/ (1366, "Incorrect string value: '\\xE6\\xB8\\x85\\xE5\\x8D\\x8E...' for column 'sname' at row 1")
出现此类错误原因:数据库mysql字符编码问题,需要改成utf-8
Questions: 修改mysql数据库默认编码
查看MySQL当前数据库的默认编码:
mysql> status; -------------- mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper Connection id: 3 Current database: hello_django Current user: django@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 2 hours 18 min 45 sec
发现编码方式是latin1
需要改成utf-8
解决方案:
(1)修改MySQL的配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf 中追加
[mysqld]character-set-server=utf8
[client]default-character-set=utf8
[mysql]default-character-set=utf8
重新启动下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
改变后,之前手工创建的数据库如未显式指定编码,则其编码仍是默认的latin1,可使用如下命令更改编码:mysql> create database db_name CHARACTER SET utf8;
好了,再次使用如下命令查看编码方式:
mysql> show variables like 'character_set_database';
mysql> status;
都改成了utf-8
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
修改编码格式成功!
参考的文档:
http://www.runoob.com/mysql/mysql-install.html