找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

嵌入式数据库的冰与火

admin 2019-4-16 05:19 145人围观 嵌入式相关

数据库分关系型数据库和非关系型数据库两种,今天我们来聊一聊关系型数据库中的嵌入式数据库。如无特殊说明,本文所提到的「数据库」均指关系型数据库。


什么是嵌入式数据库


嵌入式数据库 ( Embedded database ) 跟嵌入式设备是不相关的两个概念,尽管它可以运行在手机、平板电脑或树莓派上。

嵌入式数据库将 DBMS ( Database Management System ) 构建到应用程序中,而不是作为一个独立的工具提供,通常数据库管理工具对终端用户是不可见的,需要的维护较少或者根本不需要用户来维护。


存在的意义


先来了解一个名词「边缘计算」。

与云计算 ( Cloud Computing ) 相对,边缘计算 ( Edge Computing ) 是指将数据的处理与运算,由网路中心节点,移往网路逻辑上的边缘节点来处理。它更接近终端装置和数据来源,以便加快资料的处理与传送速度,减少延迟,对物联网和大数据分析有重要意义。



边缘计算的终端装置多为嵌入式设备,性能有限,而边缘计算却需要组织结构化的数据,用传统的数据库显然不合适。此时,嵌入式数据库低资源占用、高性能的优势就体现出来了。嵌入式数据库更适合用于终端设备或 C/S 的桌面程序上,是边缘计算的重要组成部分。


冰与火


嵌入式数据库通常是基于单个文件的,环境简单对开发和迁移较为友好,同时追求最大的磁盘读写性能。

「嵌入式」意味着它将直接关联应用程序,如果用户在安装软件时不必安装和管理一个单独的数据库,安装程序将会简单得多,开发者也不必为潜在的数据库问题提供支持,用户也减少了麻烦。

通常采用嵌入式数据库会让你的程序运行的更快,因为它避免了进程间的通信和网络的消耗。

前面讲了嵌入式数据库的这么多优点,不过要注意的是,嵌入式数据库可并非万金油,低资源占用的背后必然是牺牲了一些特性:


  1. 不适用于大规模数据的处理。

  2. 对 SQL 标准的支持不够完善。

  3. 没有完备的备份和集群机制。

  4. 通常是单用户的,吞吐量有限,缺乏并发性支持。

  5. 没有完备的权限和加密机制。


何时使用


  1. 嵌入式应用:

    所有需要迁移性,不需要扩展的应用,例如,单用户的本地应用,移动应用和游戏。

  2. 代替磁盘访问:

    在很多情况下,需要频繁直接读/写磁盘文件的应用,都就适合转为使用嵌入式数据库 。

  3. 测试:

    嵌入式数据库一般都实现了大部分常用的 SQL 标准,能满足大部分专门针对应用业务逻辑的测试。


常见的嵌入式数据库


  1. SQLite

    • 免费,支持多平台,单用户的DBMS。

    • 支持几乎所有的编程语言,Android 开发默认的数据库。

    • 应用面广泛、性能较高。

    • 原生不支持 C/S 模式的网络连接。

    • 不支持存储过程。


  2. Access

    • 收费,可定制性较差。

    • 支持 C、C#、C++、Delphi、Java (JDBC-ODBC)、VBA、Visual Basic.NET 等多种语言。

    • 仅支持Windows平台。

    • 性能相对较低。

    • 支持存储过程。


  3. Apache Derby

    • Apache 基金会的子项目,基于 Apache License, Version 2.0. 开源。

    • 纯 Java 实现的嵌入式数据库,依赖 JVM,跨平台,仅支持Java语言。

    • JDK 内置 Derby 数据库,在 ${JAVA_HOME}/db 目录下可以找到。

    • 支持 C/S 模式的网络连接。

    • 支持存储过程。


----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:Geek笔记,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......