嵌入式(文件)数据库与数据库服务器的区别

  • 初次接触嵌入式数据库(Embedded Database)可能对这个概念总不是很清楚,它究竟与数据库服务器(Database Server)有什么区别,它们又分别适用于那些应用场景呢,这是需要解决的问题。
    在谈区别之前,先来个感性认识。像Oracle、Sybase、MySQL和SQL Server这些大家熟知的数据库都属于数据库服务器(当然不排除某些也提供嵌入式版本),而像SQLite、Berkeley DB、FireBird等属于嵌入式数据库。
  • 嵌入式数据库跟数据库服务器最大的区别在于它们运行的地址空间不同。通常,数据库服务器独立地运行一个守护进程(daemon),而嵌入式数据库与应用程序运行在同一个进程。

定义

  • 嵌入式数据库是指运行在本机上、不用启动服务端的轻型数据库,它与程序紧密继承,被应用程序所启动,并伴随应用程序的退出而终止;

数据库服务器的架构如下:

  • 图中的数据库客户端通常通过数据库驱动程序如JDBC、ODBC等访问数据库服务器,数据库服务器再操作数据库文件。
  • 数据库服务是一种客户端服务器模式,客户端和服务器是完全两个独立的进程。它们可以分别位于在不同的计算机甚至网络中。客户端和服务器通过TCP/IP进行通讯。这种模式将数据与应用程序分离,便于对数据访问的控制和管理。

嵌入式数据库架构如下:

  • 嵌入式数据库不需要数据库驱动程序,直接将数据库的库文件链接到应用程序中。应用程序通过API访问数据库,而不是TCP/IP。因此,嵌入式数据库的部署是与应用程序在一起的。比如常见的版本控制器SubVersion,它所用的嵌入式数据库就是跟应用程序放在一起的。

数据库服务器和嵌入式对比如下:

  1. 数据库服务器通常允许非开发人员(DBA,数据库库管理员)对数据库进行操作,而在嵌入式数据中通常只允许应用程序对其进行访问和控制。
  2. 数据库服务器将数据与程序分离,便于对数据库访问的控制。而嵌入式数据库则将数据的访问控制完全交给应用程序,由应用程序来进行控制。
  3. 数据库服务器需要独立的安装、部署和管理,而嵌入式数据通常和应用程序一起发布,不需要单独地部署一个数据库服务器,具有程序携带性的特点。
    从上面的对比可以看出,数据库服务器和嵌入式数据库各自具有自己的特点,它们分别适用于不同的应用场景。

总结

  • 如果你要存储的数据的访问比较复杂,比如跨网络、复杂的访问控制策略,又需要数据库管理员经常进 行管理和维护,那么数据库服务器就非常适合你。
  • 如果你要存储的数据的访问之需要应用程序控制即可,并且基本不需要人工干预,而且需要对数据的访问简单、快速有效,那么嵌入式数据库适合你。
  • 另外,你是否有过这样的情况:存储的数据量不是很大,如果搞个一般的数据库来感觉太浪费了,而且如果发布这个程序还非常麻烦,这时那些微小的嵌入式数据库可能非常适合你(如某些电子邮件客户端就采用的是嵌入式数据库)。

你可能感兴趣的:(嵌入式(文件)数据库与数据库服务器的区别)