-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
58 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# 实现 | ||
|
||
|
||
|
||
当用户创建一个新的数据库,并导入数据时,数据库系统就需要存储这些数据。 | ||
|
||
说到存储,第一个想法就是文件系统(其实说到底数据库系统就是一个特殊的文件系统,区别与普通文件系统提供的的读写文件的接口,数据库只是提供了一个面向数据的接口:存储,读取和查询;整个系统为这些接口提供服务)。要怎么把这张表存在文件中呢? | ||
|
||
|
||
|
||
什么是 .csv 文件?CSV 是逗号分隔值的意思。CSV 文件是一个存储表格和电子表格信息的**纯文本文件**,其内容通常是一个文本、数字或日期的表格。 | ||
|
||
CSV 文件可以使用以表格形式存储数据的程序轻松导入和导出。 | ||
|
||
通常 CSV 文件的第一行包含表格的列标签。随后的每一行代表表格的一行。逗号分隔行中的每个单元格,这就是名称的由来。 | ||
|
||
``` | ||
name, id, favorite food | ||
quincy, 1, hot dogs | ||
beau, 2, cereal | ||
abbey, 3, pizza | ||
mrugesh, 4, ice cream | ||
``` | ||
|
||
|
||
|
||
|
||
|
||
读取 CSV 文件的逻辑也非常简单: 一行一行读取数据,然后根据";"把每个数据段取出。 | ||
|
||
|
||
|
||
|
||
|
||
专业数据库肯定不会选择用 CSV 或 JSON 作为默认存储,但几乎都支持 CSV 和 JSON 数据作为 `external table`。 | ||
|
||
如果要追求更高的性能,我们可以选择更高效的编码方式把数据以字节流的形式存储在文件中;只要数据库系统自身能够读取这些数据即可。 | ||
|
||
|
||
|
||
**只要有一个文本编辑器,能够创建和编辑 CSV 或者 JSON 文件。这其实这已经完成了创建数据表,输入,修改以及存储数据的功能。** | ||
|
||
|
||
|
||
|
||
|
||
## 存储演进 | ||
|
||
|
||
|
||
数据库是用来存储海量数据的。存储如此大量的数据,自然而然想到的就是以文件的形式存储在硬盘(HDD 或 SSD)中。当然,一些商用数据库为了追求性能,是将数据优先存储在内存中(比如 SAP 的 HANA 和 MemSQL)来获得更高速的读写。本文主要涉及的是关系型数据库针对硬盘的存储。对于内存数据库来说,依然需要硬盘作为备份或者 2 级存储,所以相关知识也是适用的。 |