数据模型和查询语言 -- 序

数据模型可能是开发软件中最重要的部分。因为它们具有非常大的影响:不仅是关于软件的编写方式,还包括我们如何思考我们正在解决的问题。

大多数应用程序都是通过将一个数据模型叠加到另一个数据模型来构建的。对于每一层,关键问题是:它如何以下一层的形式表示?例如:

1.作为一个应用程序开发人员,你可以看到真实的世界(其中有人员、组织、商品、行为、资金流、传感器等等),并以对象或数据结构的形式对其进行建模,开发操纵这些数据结构的api。这些结构通常是针对你的应用程序的。

2.当你想要存储这些数据结构时,你可以用通用的数据模型来表示它们,例如JSON或XML文档、关系数据库中的表或图形模型。

3.构建数据库软件的工程师决定以内存,磁盘或网络上的字节表示JSON/XML/关系数据/图形数据。这种表示可以允许以各种方式查询,搜索,操纵和处理数据。

4.在更底层,硬件工程师已经解决了如何用电流,光脉冲,磁场等来表示字节。

在一个复杂的应用程序中,可能会有更多的中间层,例如基于api构建的api,但是基本思想仍然是相同的:每层都通过提供一个干净的数据模型来隐藏底层的复杂性。这些抽象允许不同的人群(例如,数据库供应商的工程师和应用程序开发人员)使用他们的数据有效地工作。

有许多不同类型的数据模型,并且每个数据模型都包含关于如何使用它的假设。有些用法很简单,有些则不一定支持;有些操作是很快的,有些操作却很糟糕;有些数据转换是自然的,有些则很笨拙。

仅仅掌握一个数据模型就需要花费很多精力(想想关系数据建模中有多少本书)。构建软件已经足够困难了,即便你只使用了一个数据模型,并且也不用关心它的内部工作原理。但是,由于数据模型对上面的软件所能做的和不能做的事情有如此非常大的影响,所以选择一个适合于应用程序的软件是很重要的。

在本章中,我们将研究一组用于数据存储和查询的通用数据模型(前一列表中的第2点)。同时,我们将比较关系模型、文档模型和一些基于图形的数据模型。我们还将研究各种查询语言并比较它们的用例。而在下一章,我们将讨论存储引擎是如何工作的;也就是说,这些数据模型是如何实现的(列表中的第3点)。

你可能感兴趣的:(数据模型和查询语言 -- 序)