golang二进制读写文件-二进制文件

有些时候,我突然想知道MySQL的如何存储数据的.她是如何完整的获取某行的数据,并且获得每个字段的值.

比如,我们现在有一张表,如下图

golang二进制读写文件

歌曲表

上图是在MySQL中创建的一张表,现在我们要模仿MySQL,写一个简单的数据库系统。

当然我们只是实现了最简单的功能,数据写入,读取。

具体的代码如下:

  1. 首先我们按照song表中定义的字段创建一个数据结构

golang二进制读写文件

对应MySQL中song表数据结构抽象

2.有了数据格式,那么下一步就是数据的序列化和反序列化

第一步我们进行序列化操作,把数据写入到文件中,

golang二进制读写文件

序列化数据到文件中

3.写入之后,就是读取该文件,即是反序列化

golang二进制读写文件

反序列化操作

4.调用Song序列化和反序列化方法,创建和读取我们自己的数据文件

golang二进制读写文件

创建数据文件

golang二进制读写文件

读取二进制数据文件

这里演示了如何像MySQL一样存取每行的数据文件,当然这是最基本的数据存储原理,知道这些原理,我们可以尝试创造自己的数据库系统。

我想起了一位同事说过的话,当你知道怎么做的时候,就会感叹原来这么简单。多动手,多动脑,是个好习惯,爱好golang,docker,平时喜欢分享一些自己的感悟,有问题大家一起交流。

项目源码在:http://git.oschina.net/weizheng2015/go-binary

推荐阅读