数据库是存放数据的地方。数据有很多种类。名字、年龄、商品价格、订单时间都是数据。数据库把它们整理好。数据库开发就是建造和维护这个数据仓库的过程。这个过程需要参考很多资料。这些资料就是参考文献。参考文献像地图。它们指引开发的方向。
最早的数据库很简单。它们像表格。一行就是一个记录。一列就是一个属性。这种数据库叫关系型数据库。埃德加·科德提出了关系模型。他的论文《大型共享数据库的关系模型》很重要。这是1970年的事情。这篇论文是基础。很多后来的书都引用它。数据库开发人员需要读它。即使不读原文,也要知道思想。关系模型的核心是表。表之间可以关联。这解决了数据重复的问题。数据重复浪费空间。也容易出错。
建数据库需要设计表。设计表需要方法。彼得·陈的实体-关系模型很有用。他画了一种图。实体用方框表示。关系用菱形表示。属性用椭圆表示。这个图很直观。开发人员先画图。然后根据图建表。他的论文《实体-关系模型:统一视图》发表于1976年。这篇论文是设计指南。很多教科书教这个方法。设计是第一步。设计不好,后面会麻烦。
数据库建好了,就要用语言操作它。SQL是这种语言。SQL代表结构化查询语言。唐纳德·钱伯林和雷蒙德·博伊斯最早提出了想法。他们在IBM工作。论文《SEQUEL:结构化英语查询语言》介绍了它。时间是1974年。后来SQL成为标准。每个数据库开发人员都要学SQL。参考文献里一定有SQL的官方标准文档。国际标准化组织发布它。文档很长。开发人员不必全读。但要知道关键部分。如何查数据,如何改数据,如何删数据。这些是基本操作。
数据库大了会变慢。索引让查询变快。索引像书的目录。不用翻整本书就能找到内容。数据库索引是一个单独的结构。它保存字段的值和位置。加索引要小心。索引占用空间。也会降低写入速度。开发人员要权衡。关于索引的参考文献很多。拉菲·拉梅什的《数据库管理系统实现》一书讲得很清楚。他解释了B树和B 树。这些是常见的索引结构。理解它们,才能用好索引。
数据安全很重要。不能让人随便看。也不能让人随便改。数据库有权限管理。可以给不同人不同的权利。有些人能看全部数据。有些人只能看一部分。有些人不可以删除数据。参考文献包括安全手册。比如数据库软件自己的安全指南。还有通用标准。《计算机安全基础》这样的书有帮助。开发人员要设置用户和角色。要管理密码。要防止攻击。SQL注入是一种常见攻击。攻击者输入恶意代码。数据库会执行它。这很危险。开发人员要检查所有输入。不能直接相信用户给的数据。
数据库不只一种。关系型数据库常用。但有些情况不合适。需要存文档。文档结构不固定。关系型数据库的表格定。这时用文档数据库。比如MongoDB。它的参考文献是官方文档。开发人员学习如何存JSON格式的数据。另一种情况是数据关系复杂。像社交网络。朋友的朋友的朋友。图数据库处理这个。比如Neo4j。参考文献会解释图论和遍历算法。
数据库经常同时被很多人使用。这会产生问题。两个人同时改同一条数据。谁的结果算数?事务解决这个问题。事务是一组操作。要么全部成功,要么全部失败。数据库保证事务的特性。原子性、一致性、隔离性、持久性。这四个词的首字母是ACID。关于ACID的参考文献很多。吉姆·格雷的书《事务处理:概念与技术》是经典。他详细解释了原理。开发人员根据这个写代码。他们用“开始事务”、“提交”、“回滚”这些命令。
数据库里的数据越来越多。需要分析它们。找出规律。支持决策。这需要数据仓库和联机分析处理。数据仓库把多个数据库的数据集中起来。它按主题组织数据。拉尔夫·金博尔写了《数据仓库工具箱》。这本书是实践指南。他讲维度建模。讲星型模式和雪花模式。开发人员按这本书的方法建数据仓库。业务人员就能方便地做报表了。
数据库要一直工作。不能停。停了业务就停了。所以数据库要备份。备份是把数据复制到别的地方。万一坏了可以恢复。恢复的策略很重要。参考文献会讨论完全备份、增量备份、日志备份。开发人员制定计划。每天备份多少。备份存在哪里。怎么测试恢复。这些都不能马虎。
现在很多人把数据库放在云上。云服务公司提供数据库。比如亚马逊的Aurora。谷歌的CloudSpanner。微软的AzureSQL数据库。用这些服务,开发人员不用自己维护硬件。但他们还是要懂数据库原理。云服务的文档是新参考文献。开发人员学习如何配置云数据库。如何监控性能。如何控制成本。
数据库开发是不断学习的过程。新的技术会出现。老的参考文献仍有价值。基础概念变化不大。表、索引、事务、SQL。这些是核心。开发人员从经典论文和书籍开始。他们阅读官方文档。他们参考实践指南。他们把知识用在项目里。他们解决问题。他们让数据安全可靠。数据为生活服务。购物记录、出行信息、医疗档案都在数据库里。好的数据库开发很重要。参考文献是路上的灯。它们照亮方向。开发人员跟着光走。他们建造坚固的数据仓库。