甲骨文

Oracle 不是最流行的数据库,但却是最著名的数据库。虽然可以说是最受欢迎的。看怎么算。如果你只看公司的数量,那么 MySQL 是最受欢迎的数据库:它非常好而且完全免费 :)

但也可以换个角度考虑。如果有一家拥有一百万客户的公司使用 Oracle,有 5 家公司拥有一百个客户使用 MySQL,那么 Oracle 有一百万客户而 MySQL 只有 500 人。

总的来说,如果你让有钱的大公司看看他们选择了哪种 DBMS,那么世界上大约三分之一的公司都在使用 Oracle。像这样的东西。

作为一名程序员,您将来更有可能在 Oracle 上工作,而不是在 MySQL 上工作。Internet 上有一个很棒的视频演示了过去 20 年来 DBMS 的受欢迎程度发生了怎样的变化。

MySQL

在所有 DBMS 中第二流行的是 MySQL。并且是所有免费DBMS中流行度第一的。现在你明白我们为什么要从她的例子中学习 SQL 了吧。炒作归炒作,企业在基础设施的选择上相当保守。

原则上,我们已经讲过MySQL。一旦他们被Sun收购,然后被Oracle收购。嗯,很难称之为善良的公司。

正是他们,在收购了Sun之后,不断地试图让Java付出代价。

是的,在甲骨文收购它们之前,Sun 拥有 Java 和 MySQL。

这个事实和 Oracle 的声誉让 MySQL 开发人员有点害怕,他们决定 fork MySQL 项目并将其命名为 MariaDB。

MariaDB实际上是MySQL 的克隆,具有一些实现怪癖,可以让您绕过专利和许可的细微差别。

不过,甲骨文也不是傻子。为了防止客户和开发人员泄露给 MariaDB,Oracle 继续资助 MySQL 的开发和开发,MySQL 继续免费。

坐在两把椅子上,为企业客户发布了付费的MySQL Enterprise ,它与MySQL Community Edition没有区别,但其许可证更适合企业。

数据库

另一个有趣的 DBMS 是 PostgreSQL(发音为“postgres cue”)。

这是近年来迅速普及的另一种免费 DBMS。虽然离MySQL还差得很远。

PostgreSQL 主要专注于分布式工作。它的优势是:

  • 高性能可靠的事务和复制机制
  • 内置编程语言的可扩展系统:PL SQL、PL JS、PL Python……
  • 表继承
  • 索引几何(特别是地理)对象的能力
  • 内置对 JSON 格式的半结构化数据的支持,并能够对其进行索引
  • 可扩展性(创建新数据类型、索引类型、编程语言、扩展模块、连接任何外部数据源的能力)

知道为什么这么叫吗?事情是这样的……

大约 50 年前,即 70 年代初,伯克利大学开始开发自己的关系型 DBMS,并将其命名为Ingres

在 80 年代初期,Michael Stonebreaker 教授离开了该项目并决定编写自己的 DBMS 与 blackjack 和妓女。他和他的学生开始编写他们自己的 DBMS,他们将其简称为Post Ingres,后来简称为Postgres

由于 Postgres 这个名字对任何人都没有任何意义,因此决定为其添加 SQL 后缀。PostgreSQL 就这样横空出世,立马丢了双S,开始写成PostgreSQL。但是你说名字,你需要像 PostgresQL 一样读它。

无SQL

如果您对数据库感兴趣,那么您肯定听说过NoSQL 数据库。我赶紧打扰你:NoSQL 纯粹是一个营销名称,而 SQL 就在那里。他只是被截断了。

它是什么样子的?想象一个用 HTML、CSS 和 JavaScript 编写的漂亮网页……在 1995 年的浏览器中打开。它依靠 10% 的 CSS 工作,完全不支持 JavaScript。这个新的精简标准称为…… NoHtml

例如,NoSQL 可能不支持表之间的 JOIN,然后您必须在程序中的 Java 代码级别模拟它,或者将相关表的所有数据存储在一个巨大的表中。

如果在 NoHtml 的情况下我们似乎回滚到 20 年前,那么在 NoSQL 的情况下,回滚发生在大约 40 年前。

以Facebook用来存储数十亿用户数据的Cassandra NoSQL 数据库为例。实际上,他们开发了它,然后将其发布为一个开源项目。

让我们从最有趣的开始——所有的 DBMS 代码都是用 Java 编写的。C++ 代码可能会运行得更快,但会有更多错误。而且Java代码更容易维护和开发。

向 Casandra DBMS 发出请求的一般格式看起来非常熟悉:

  SELECT columns  
  FROM table 
  WHERE condition
  GROUP BY columns 
  ORDER BY sorting 
  LIMIT quantity

如您所见,SQL 就在那里。你知道这里缺少什么吗?加入!您只能从一个表中选择数据:)

这是官方文档中的引述:

您不能在 Cassandra 中执行联接。如果您已经设计了一个数据模型并发现您需要类似连接的东西,您将不得不在客户端完成工作,或者创建一个非规范化的第二个表来代表您的连接结果。