数据库分关系型数据库和非关系型数据库两种,今天我们来聊一聊关系型数据库中的嵌入式数据库。如无特殊说明,本文所提到的「数据库」均指关系型数据库。
什么是嵌入式数据库
嵌入式数据库(Embeddeddatabase)跟嵌入式设备是不相关的两个概念,尽管它可以运行在手机、平板电脑或树莓派上。
嵌入式数据库将DBMS(DatabaseManagementSystem)构建到应用程序中,而不是作为一个独立的工具提供,通常数据库管理工具对终端用户是不可见的,需要的维护较少或者根本不需要用户来维护。
存在的意义
先来了解一个名词「边缘计算」。
与云计算(CloudComputing)相对,边缘计算(EdgeComputing)是指将数据的处理与运算,由网路中心节点,移往网路逻辑上的边缘节点来处理。它更接近终端装置和数据来源,以便加快资料的处理与传送速度,减少延迟,对物联网和大数据分析有重要意义。
边缘计算的终端装置多为嵌入式设备,性能有限,而边缘计算却需要组织结构化的数据,用传统的数据库显然不合适。此时,嵌入式数据库低资源占用、高性能的优势就体现出来了。嵌入式数据库更适合用于终端设备或C/S的桌面程序上,是边缘计算的重要组成部分。
冰与火
嵌入式数据库通常是基于单个文件的,环境简单对开发和迁移较为友好,同时追求最大的磁盘读写性能。
「嵌入式」意味着它将直接关联应用程序,如果用户在安装软件时不必安装和管理一个单独的数据库,安装程序将会简单得多,开发者也不必为潜在的数据库问题提供支持,用户也减少了麻烦。
通常采用嵌入式数据库会让你的程序运行的更快,因为它避免了进程间的通信和网络的消耗。
前面讲了嵌入式数据库的这么多优点,不过要注意的是,嵌入式数据库可并非万金油,低资源占用的背后必然是牺牲了一些特性:
不适用于大规模数据的处理。
对SQL标准的支持不够完善。
没有完备的备份和集群机制。
通常是单用户的,吞吐量有限,缺乏并发性支持。
没有完备的权限和加密机制。
何时使用
嵌入式应用:
所有需要迁移性,不需要扩展的应用,例如,单用户的本地应用,移动应用和游戏。
代替磁盘访问:
在很多情况下,需要频繁直接读/写磁盘文件的应用,都就适合转为使用嵌入式数据库。
测试:
嵌入式数据库一般都实现了大部分常用的SQL标准,能满足大部分专门针对应用业务逻辑的测试。
常见的嵌入式数据库
SQLite
免费,支持多平台,单用户的DBMS。
支持几乎所有的编程语言,Android开发默认的数据库。
应用面广泛、性能较高。
原生不支持C/S模式的网络连接。
不支持存储过程。
Access
收费,可定制性较差。
支持C、C#、C++、Delphi、Java(JDBC-ODBC)、VBA、VisualBasic.NET等多种语言。
仅支持Windows平台。
性能相对较低。
支持存储过程。
ApacheDerby
Apache基金会的子项目,基于ApacheLicense,Version2.0.开源。
纯Java实现的嵌入式数据库,依赖JVM,跨平台,仅支持Java语言。
JDK内置Derby数据库,在${JAVA_HOME}/db目录下可以找到。
支持C/S模式的网络连接。
支持存储过程。
范木甬你一赞赏,我就写的更有劲了
赞赏
人赞赏