文档章节

【原创】如何在 libgda 和 SQLite 之间作出选择

摩云飞
 摩云飞
发布于 2013/03/20 12:12
字数 1499
阅读 721
收藏 14
How to choose between Libgda and SQLite
如何在 libgda 和 SQLite 之间作出选择

(本文为 官方文档 翻译,以中英对照形式呈现)

Libgda has been added as a new external dependency for GNOME 2.26, with now two database libraries: Libgda and SQLite.
libgda 已作为一个新外部依赖项被添加到 GNOME 2.26 中了,如此就出现了 libgda 和 SQLite 并存的局面。


This page offers some hints about how to make the choice between the two when writing an application which needs to store/access some data in a database.
本篇文章针对编写需要进行存储/访问数据库的应用程序时,如何在上述两者之间作出选择给出了一些建议。


Comparison hints
差异方面

  • Of course if you want to either be able to access different databases types or you think you may need to in the future, Libgda is a better choice because with SQLite you can only access SQLite files. The comparison makes sense only if you want to create an SQLite database and have to decide between Libgda and SQLite to do it. Note that Libgda uses SQLite internally anyway (it's not a reimplementation) to access SQLite files.
  • 如果你打算在现在就能够访问多种数据库类型,或者你认为在将来需要这么做,libgda 是你的不二之选,因为 SQLite 只提供了对 SQLite 文件的访问。上述的比较是基于这样一个前提:你打算创建一个 SQLite 数据库,并且在 libgda 和 SQLite 之间做出选择。值得注意的是,libgda 在自身内部使用了 SQLite (并非重新实现,而是使用)来访问 SQLite 文件。

  • Dependencies point of view: if you want very few dependencies, SQLite is a better choice as it has no dependency whereas Libgda depends on GLib and LibXML2.
  • 从依赖性的角度:如果你期望软件包的安装依赖少,那么 SQLite 是更好的选择,因为它没有任何其他依赖,而 libgda 依赖于 GLib 和 LibXML2 。

  • Data access point of view: SQLite only allows reading data using a forward moving cursor, and Libgda allows you to choose between that mode and a random access data access mode (some caching is done). This point is important if you need to run a SELECT statement once and use the results several times.
  • 从数据访问的角度:SQLite 仅支持通过前向移动指针来进行数据读取,而 libgda 允许你在前向模式和随机访问模式(通过一些缓存策略实现)之间进行选择。当你需要运行一次 SELECT 语句后多次使用其返回结果时,后者的功能是重要的。

  • Low level control point of view: if you need some very specific SQLite features, then it's better to use SQLite as Libgda does not allow you to access SQLite's API direclty.
  • 从控制级别的角度:如果你需要使用某些特殊的 SQLite 特性,那么你最好还是直接使用 SQLite ,因为 libgda 不允许你直接对 SQLite API 进行访问。

  • Additionnal features point of view: Libgda offers much more than just a wrapper around SQLite (or other database's APIs), if you need them, it's better to use Libgda than to reimplement them yourself.
  • 从附加特性的角度:libgda 所提供的功能远远不止对 SQLite API 的封装(或者其他数据库 API),如果你需要这些附加功能,使用 libgda 绝对是你的首选,因为你不需要自己重新造轮子了。

  • Raw performances point of view: by design SQLite is better (but not by much).
  • 从性能表现的角度:在某些方面 SQLite 可能会更好(但也没好那么多)。

  • Data types point of view: Libgda (as most if not all databases engines) impose that for each column in each table the data be of the same type. SQLite does not impose this restriction (this means that for each row, the data in a column can be of a different type and it's up to the programmer to handle that).
  • 从数据类型的角度:libgda (像大多数数据库引擎一样)强制要求在表中每一列的数据必须具有相同的类型。SQLite 并没有此限制(意味着,对于每一行而言,存在于某列中的数据可能具有不同的类型,取决于程序员如何处理)。


One important thing to keep in mind is that changing from using SQLite to using Libgda (or the other way around) can be a long an painfull experience, so you need to make sure you choose the right one right from the beginning.
需要铭记于心的一件事:将使用 SQLite 的代码转变为使用 libgda (或者相反),将是一个漫长而痛苦的过程。所以你最好从一开始就确保你的选择是明智的。


Common points
共性方面


Here are some (more or less) common points between Libgda and SQLite:
下面是 libgda 和 SQLite 之间的一些共性方面:

  • both work on all major OSes (Linux/Unix, Windows, MacOS)
  • 两者均可在大多数操作系统上工作(Linux/Unix, Windows, MacOS)

  • both are easy to use in the compilation process thanks to pkg-config
  • 两者从编译的角度来讲都算易于使用(基于pkg-config)

  • both are well maintained
  • 两者都得到了很好的开发维护


Libgda's features SQLite does not have
SQLite 所不具有的 libgda 的特性


SQLite is a database engine implementation, and as such it's not meant to compete feature for feature with database abstraction libraries like Libgda, ODBC or JDBC. However it's important to know what features are implemented in Libgda which you may need to implement yourself in your application if you use SQLite directly.
SQLite 是一个数据库引擎实现,正因为如此,其并不打算与 Libgda、ODBC 或 JDBC 一类的数据库抽象库进行各种特性比较。然而,你需要明确知道的是哪些特性在 libgda 中被实现了,而当你直接使用 SQLite 的时候却需要你自己在程序中实现。

Those features are:
这些特性包括:

  • meta data retreival: obtaining information about database objects such as the tables and their columns, the triggers,...
  • 元数据获取:获取数据库对象的信息,如表信息,表中的列信息,触发器信息,等等

  • multi-threaded access to connections
  • 多线程同时对 connection 进行访问

  • SQL parser
  • SQL 解析器

  • loading and saving XML or CSV files
  • 加载和保存 XML 或者 CSV 文件

  • UI interface to the data: even though it's not (yet) part of Libgda, Libgnomedb implements some data bound widgets
  • 访问数据的 UI 接口:尽管这个尚不属于 libgda 的一部分,libgnomedb 已实现了一些与数据绑定有关的小程序。



© 著作权归作者所有

共有 人打赏支持
摩云飞
粉丝 368
博文 534
码字总数 952694
作品 0
徐汇
程序员
私信 提问
python使用sqlite数据库存储数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/winycg/article/details/83933225 SQLite是一款开源的数据库引擎,由于无需运行单独的服务器,因此成为小型项...

winycg
11/10
0
0
sqlite3 用SQLCipher 加密后 命令行下如何重新打开和读取

http://sqlcipher.net/sqlcipher-api/#key PRAGMA key The process of creating a new, encrypted database is called “keying” the database. SQLCipher uses just-in-time key derivati......

kjpioo
2013/08/01
0
2
一个小时内学习 SQLite 数据库

1. 介绍 SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的...

红薯
2012/05/11
53K
59
引入 SQLite 数据库在 Rational Functional Tester 中轻松读取测试数据

目前,越来越多的人选择使用 Rational Functional Tester(RFT) 来实现产品的自动化测试。通常情况下,测试数据会存放在数据池中,或者以文本形式存放在外部的文件里(比如资源文件或 XML 文件...

IBMdW
2011/08/01
788
0
手机开发-如何查看android数据文件和数据库

在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看。android项目中的sqlite数据库位于/data/data/项目包/databases中。 工具/原料 doc命令adb工具,ecl...

娶到笨笨
2014/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Eos测试框架EosFactory

EOS Factory包含一个完整的EOS测试框架,可以进行智能合约的开发和测试。由Tokenika于创建于2017年的这个基于Python的EOS测试框架可以轻松地完成智能合约的开发、部署与测试。 如果你希望马上...

汇智网教程
5分钟前
0
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
31分钟前
1
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
34分钟前
2
0
mac 下 mysql 8.0.13 安装并记录遇到的问题 以便以后查看

安装 官网mysql 下载地址 安装过程 省去 安装好之后 下载navicat 错误1 链接 遇到 mysql 2003 - Can't connect to MySQL server 错误, 解决方案 重启mysql 服务 #错误2 ERROR 1045: Acces...

杭州-IT攻城狮
昨天
5
0

中国龙-扬科
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部