データベースの基本的な考え方
データ
- シンボルデータの記録が物事を記述するために(Data)を参照され
- 数字、テキスト、グラフィックス、画像、音声、アーカイブ、レコードなどを含みます
- 「記録」形式の保存のための統一フォーマットによると、
テーブル
- 別のレコードは、「テーブル」を形成するために一緒に編成しました
- データの特定を格納するために使用されます
データベース
- データベーステーブルのコレクションは、データが倉庫に格納されています
- 特定の方法団体の店で相互に関連するデータ
データベースシステムの開発の歴史
データベースの第一世代
- 1960年代から、データベースシステムの第一世代が利用できます。彼らは、統合管理やデータ共有のための強力なサポートを提供する、階層モデルのデータベース・システムとネットワークモデルです
第二世代データベース
- 1970年代初頭、第二世代のデータベース - リレーショナルデータベースが始まりました
- データベースのリレーショナル・データベース・システムの第二世代は、徐々にデータベースレベルとネットワークモデルを置き換えるために始めた1980年代初頭、可能なIBMのDB2リレーショナルデータベースシステムは、主要なデータベース、主流の業界になりました。これまでのところ、リレーショナルデータベースシステムは、依然として主要な位置データベース・アプリケーションを占有しました
第三世代のデータベース
- 1980年代以降、異なるデータベースシステムの様々な理由により、このような技術データベース、マルチメディアデータベース、グラフデータベース、インテリジェントデータベース、分散データベースやオブジェクト指向データベース、特にオブジェクト指向データベースシステムとして新興分野に適応するために、その実用的な、幅の広い適応とすべての年齢の人々
- 1990年代後半20は、データベースシステムの様々な一般的なアプリケーション状況をサポートして形成されています。もちろん、ビジネスアプリケーションでは、リレーショナルデータベースがまだ主流ですが、いくつかの新しい要素が既に存在している主流のビジネスデータベース・システムに追加されます。たとえば、Oracleのサポート「の関係 - オブジェクト」データベースモデル
今日の主流のデータベース入門
SQL Serverの(Microsoft製品)
- Windowsオペレーティングシステムの場合
- シンプルで使いやすいです
オラクル(Oracle製品)
- すべての主要なプラットフォームの場合
- セキュリティは、複雑な動作、改善します
DB2(IBM社)
- すべての主要なプラットフォームの場合
- 大規模な、安全で、音
MySQLの(Oracleの買収)
- 無料、オープンソース、小さいサイズ
リレーショナルデータベース
- リレーショナルデータベースシステムは、リレーショナルモデルに基づいて、データベース・システム、リレーショナルモデルからの基本的な概念であります
- 直接表現することを計画 - 簡単な2次元のデータテーブルを使用してリレーショナル代数の理論に基づいて、関係モデル、データ構造は、あなたが簡単な「関係実体」を使用することができます
- 図ERは、次のエンティティ(データオブジェクト)、三つの要素と属性の間の関係が含まれています
エンティティ
- また、インスタンスと呼ばれ、対応する実世界のオブジェクトは、など銀行の顧客、銀行口座などの他の「イベント」や「もの」、と区別することができます
プロパティ
- 特定の特性を有するエンティティ、エンティティが複数の属性を有することができます。たとえば、「銀行の顧客は、」各エンティティは、集中型のエンティティ名、住所、電話やその他の財産を持っています
接触
- また、関係と呼ばれる接触と呼ばれるエンティティセット、の対応。例えば、銀行の顧客と銀行口座間の「貯蓄」との関係があります
エンティティとエンティティ間のすべてのリンクのセットは、リレーショナルデータベースを構成します
ストレージ構造は、2次元のリレーショナルデータベーステーブルである事を反映し、その連絡先のデータが表形式で保存されています
各二次元の表では、各行はレコード、オブジェクトを記述するために使用される情報と呼ばれ、各列はフィールドと呼ばれ、オブジェクトのプロパティを記述するために使用されます
リレーショナルデータベースアプリケーション
リレーショナルデータベース
- オラクル、MySQLの
- SQLServerのは、Sybase
- Informixの、アクセス
- DB2、FoxProの
リレーショナルデータベースアプリケーション例
- 12306ユーザー情報システム
- 淘宝網のアカウント情報システム、Alipayのアカウントシステム、モバイル、テレコム、中国聯通の携帯電話の信号情報システム、課金システムのユーザーアカウントの銀行システム
- Webサイトのユーザー情報システム
非リレーショナルデータベースの紹介
- また、非リレーショナル・データベースのNoSQL(ませんのみSQL)と呼ばれる、データが基づいているリレーショナルモデルに保存されていない、固定されたテーブルの形式を必要としません
- 高効率と高パフォーマンスを演奏インターネット時代のますます急速な発展中の相補的なリレーショナルデータベース、などの非リレーショナルデータベース、
- 非リレーショナルデータベースの利点
- 高同時読み書きデータベースの需要
- 効率的な大量データストレージおよびアクセス
- データベースのための高いスケーラビリティと高可用性の要件
非リレーショナル・データベース・ストレージ
- キー - モード(キーと値)の値は、キーストア、削除、変更データの基礎にあります
- ストレージカラム(列指向)、関連データは、カラムファミリーに保存されています
- どの文書が、データベースは、一連のデータ項目から構成され、各データ項目は、名前に対応する値を持っています
- 頂点としてグラフエンティティ、エッジの関係は、グラフィックにデータを保存しました
非リレーショナル・データベース製品
-
キー値のデータを格納するオープンソース、高性能、分散メモリオブジェクトキャッシュシステムであるmemcachedの
- ストレスを軽減し、データベースのアクセス速度を高速化するために、キャッシュデータ
- 動的なWebアプリケーションを高速化
- メモリに保存されたキャッシュされたコンテンツ
- Redisのは、データがメモリに格納され、また、店舗のキーと値のデータへの道ですが、ディスクへの書き込み、定期的にデータの意志
- それはFMemcachedに対する次のような特徴を持っています
- サポートメモリキャッシュ
- 永続性をサポートしています。
- 複数のデータ型
- クラスタのサポート、分散
- サポートキュー
アプリケーション例のRedisの
- データベースのフロントエンドキャッシュ
- 共有セッション
- ときのキー/値に加えて、複数のデータ型をバッファリングする必要性を
- データのキャッシュは長期保存が必要な場合
MySQLデータベースの紹介
- MySQLはオープンソースのリレーショナルデータベースです
- オラクルの製品
- GPLの遵守は、自由に変更するために使用することができます
- 機能
- パフォーマンス、サービスの安定性
- オープンソース、著作権フリー、低コスト
- マルチスレッド、マルチユーザ
- C / S(クライアント/サーバ)アーキテクチャに基づいて、
- 安全性と信頼性
MySQLコミュニティ版とビジネスエディション
- MySQLの商用版の有料の使用には、MySQL ABの開発と保守を担当して
- MySQLコミュニティ版は、自由に使用する、一緒に、世界中の愛好家の開発と保守を散乱MySQLの開発者であります
- 両者の差
- ビジネス版の管理と、より厳格なテストセッション、優れた安定性
- ビジネス版はGPLに準拠していません。
- などを維持するために失敗し、パッチ適用、などの商用版利用できる7 * 24時間サービス、
MySQLの製品ポートフォリオ
- 最初のキャンプ:5.0から5.1キャンプ、以前の製品の継続であると言うことができます
- 第二キャンプ:5.4から5.7のキャンプは、より良いのMySQL AB社、コミュニティを統合するために、同社は、パフォーマンスが向上し、サードパーティのストレージエンジンを、開きました
- 第三キャンプ:6.0から7.1キャンプが開発したクラスタ化されたデータベースの新しい時代のニーズを満たすために、MySQL Clusterのバージョンです
- MySQLのダウンロードサイト
MySQLのインストール
- 簡単にマウントするLinuxシステムを使用して、VMwareの仮想マシンのLinuxシステムを開き、ホストのMySQLへの圧縮パッケージをダウンロードし、MySQLの設定は、アーカイブフォルダの共有を保存しているMySQL5.7のダウンロードを
[root@localhost ~]# yum install gcc gcc-c++ make ncurses ncurses-devel bison cmake -y //安装环境包
已加载插件:fastestmirror, langpacks
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
...
已安装:
bison.x86_64 0:3.0.4-2.el7 cmake.x86_64 0:2.8.12.2-2.el7
gcc.x86_64 0:4.8.5-39.el7 gcc-c++.x86_64 0:4.8.5-39.el7
ncurses-devel.x86_64 0:5.9-14.20130511.el7_4
作为依赖被安装:
cpp.x86_64 0:4.8.5-39.el7 glibc-devel.x86_64 0:2.17-292.el7
glibc-headers.x86_64 0:2.17-292.el7 kernel-headers.x86_64 0:3.10.0-1062.4.3.el7
libmpc.x86_64 0:1.0.1-3.el7 libstdc++-devel.x86_64 0:4.8.5-39.el7
m4.x86_64 0:1.4.16-10.el7
更新完毕:
make.x86_64 1:3.82-24.el7 ncurses.x86_64 0:5.9-14.20130511.el7_4
作为依赖被升级:
glibc.x86_64 0:2.17-292.el7 glibc-common.x86_64 0:2.17-292.el7
libgcc.x86_64 0:4.8.5-39.el7 libgomp.x86_64 0:4.8.5-39.el7
libstdc++.x86_64 0:4.8.5-39.el7 ncurses-base.noarch 0:5.9-14.20130511.el7_4
ncurses-libs.x86_64 0:5.9-14.20130511.el7_4
完毕!
[root@localhost ~]# useradd -s /sbin/nologin mysql //创建MySQL程序型用户
[root@localhost ~]# mount.cifs //192.168.100.8/shares /mnt/ //将宿主机中MySQL压缩包路径挂载到Linux系统中
Password for root@//192.168.100.8/shares:
[root@localhost ~]# cd /mnt/ //进入挂载点目录
[root@localhost mnt]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt //解压MySQL压缩包到opt目录
......
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/extract_key.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/buckets.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/allocate.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/util.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_map.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_set.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_set_fwd.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_map_fwd.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/timer.hpp
[root@localhost mnt]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \ //配置mysql
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ //指定安装路径
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ //指定mysql.sock.路径
> -DSYSCONFDIR=/etc \ //指定配置文件存放位置
> -DSYSTEMD_PID_DIR=/usr/local/mysql \ //指定pid文件存放为位置
> -DDEFAULT_CHARSET=utf8 \ //字符集格式utf-8
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ //开启存储引擎
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \ //指定数据存放位置
> -DWITH_BOOST=boost \ //关联支持c++运行库
> -DWITH_SYSTEMD=1 //开启systemd
....
-- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/mysql-5.7.20
[root@localhost mysql-5.7.20]# make //make过程(时间比较长,耐心等待)
....
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o
Linking CXX executable mysql_embedded
[100%] Built target mysql_embedded
Scanning dependencies of target mysqltest_embedded
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o
Linking CXX executable mysqltest_embedded
[100%] Built target mysqltest_embedded
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process
[root@localhost mysql-5.7.20]# make install //安装
...
-- Installing: /usr/local/mysql/./COPYING-test
-- Installing: /usr/local/mysql/./README-test
-- Up-to-date: /usr/local/mysql/mysql-test/mtr
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@localhost mysql-5.7.20]# cd /usr/local/ //进入安装目录
[root@localhost local]# chown -R mysql.mysql mysql/ //mysql目录更改用户与组
[root@localhost local]# mv /etc/my.cnf /etc/my.cnf.bak //更改配置文件名称
[root@localhost local]# vim /etc/my.cnf //重新编辑配置文件
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
:wq
[root@localhost local]# vim /etc/profile
...
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH //重新声明环境变量
:wq
[root@localhost local]# source /etc/profile //重新执行
[root@localhost local]# cd /usr/local/mysql/bin //进入MySQL命令目录
[root@localhost bin]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //初始化数据库
2019-12-02T11:51:28.112082Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-12-02T11:51:28.263398Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-12-02T11:51:28.287408Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-12-02T11:51:28.341284Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 131f32df-14fa-11ea-87e6-000c297265cb.
2019-12-02T11:51:28.342106Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-12-02T11:51:28.342452Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
[root@localhost ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
//将MySQL启动脚本夫复制到系统system目录下
[root@localhost ~]# systemctl enable mysqld.service //设置MySQL为开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost ~]# systemctl start mysqld.service //启动MySQL
[root@localhost ~]# mysqladmin -u root -p password //设置MySQL数据库密码
Enter password: //没有原始密码,直接回车
New password: //输入新密码
Confirm new password: //再次输入密码
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
//安全提示
[root@localhost ~]# mysql -u root -p //登录MySQL
Enter password: 输入密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; //查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)