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