热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLite4的设计

SQLite4对于SQLite3而言,是一个可选方案,而不是一个替代方案.SQLite3还没有过时.SQLite3和QLite4将会并行受到支持.SQL

SQLite4 对于SQLite3而言,是一个可选方案,而不是一个替代方案. SQLite3 还没有过时. SQLite3 和 QLite4 将会并行受到支持. SQL

1.0 内容提要

  • SQLite4 是一个放在库中的紧凑的,自包含的,零维护的的ACID数据库引擎, 像SQLite3一样, 但具有改进的接口和文件格式.

  • 运行时环境封装到了一个对象之中.

  • 使用了一个很不错的键值对存储引擎:

  • 一个独立的大型键空间 - 不是SQLite3中那种每个表单独的键空间和索引.

  • 按字典顺序的键排序.

  • 多个存储引擎,可在运行时互换.

  • 默认在磁盘上的存储殷勤使用了一个日志结构的合并数据库.

  • 表的PRIMARY KEY真正被用作存储引擎的键.

  • 可以使用小数点运算.

  • 外键约束和递归触发器默认是启用的.

  • 覆盖指数可以显示声明.

  • SQLite3 安装、基本操作

    Ubuntu 12.04下SQLite数据库简单应用

    Ubuntu 12.04下安装 SQLite及其使用方法

    2.0 概述

    SQLite4 对于SQLite3而言,是一个可选方案,而不是一个替代方案. SQLite3 还没有过时. SQLite3 和 QLite4 将会并行受到支持. SQLite3 遗留的好处不会被抛弃. SQLite3 还将会被持续的维护和改进. 但如果需要的话,新系统的设计者现在将可以选择 SQLite4 而不是 SQLite3.

    SQLite4 努力保持了SQLite3的最优秀特性,同时在不破坏兼容性的前提下解决了SQLite3中无法修复的问题. SQLite3 和 SQLite4 中将会持续保持一样的特性有:

  • SQLite4 是放在一个库中并链接到一个大型应用程序的完整的,关系型,事务性的, ACID, SQL 数据库引擎. 没有服务器,,I/O直接面向硬盘.

  • SQLite4 的源代码任何人可以用于任何目的. 没有版权、发布或者公开源代码或者编译二进制文件方面的的限制. 不用去担心烦人的许可证.

  • 使用了动态类型,而不是大多数其它的SQL数据库引擎所使用的僵化的静态类型.

  • (默认)在磁盘上的镜像是一个单独的使用良好且稳定文件格式的磁盘文件, 使得SQLite4库适合于作为一个应用程序的文件格式使用.

  • SQLite4 将会是快速且可靠的,无需管理员操心它就能运作的蛮好.

  • SQLite4 的实现只有最简化的依赖,因而它可以很容易的集成到嵌入式系统或者其它非常规的运行时环境.

  • 实现上仍然采用常用的汇编语言C。与SQLite3相比,SQLite4使用了更多C99特性,不过仍然可以使用常见的编译器编译。SQLite4使用了诸如size_t,int64_t,uint64_t以及其他标准数据类型。

    SQLite4的编程接口与SQLite3的非常相似,只不过命名前缀都从sqlite3_更改为sqlite4_。SQLite3中旧的和作废的接口已经从SQLite4中剔除了。给一些函数增加了参数,有时对参数稍作修改或者对其参数顺序进行重新排序。修改了某些接口名字,使其更加符合其功能。总体上来说,SQLite4的编程接口与SQLite3的非常相似,这样移植一个SQLite3上的应用到SQLite4上只需花一个小时或者两个小时完成搜索替代就可以了。

    SQLite3和SQLite4没有共用任何符号,因此把SQLite3和SQLite4同时嵌入到同一进程,同时使用它们都是可行的.

    3.0 SQLite4的主要改变 3.1 运行时对象

    SQLite4中一些接口的第一个参数接收一个(新加的)指向一个sqlite4_env对象的指针,它定义了运行时环境。需要接收sqlite4_env指针的示例程序包括:

  • sqlite4_open()

  • sqlite4_malloc(), sqlite4_realloc(), and sqlite4_free()

  • sqlite4_mprintf()

  • sqlite4_random()

  • sqlite4_config()

  • 一个sqlite4_env对象实例定义了SQLite4与其他系统交互是如何交互的。一个sqlite4_env对象包含的方法能够:

  • 分配,进入,离开和收回互斥体

  • 分配,调整和释放堆内存,

  • 访问和控制底层键/值存储引擎,

  • 使用高质量随机种子初始化内建PRNG,

  • 取得当前时间和日期与本地时区,

  • 记录error日志消息.

  • 标准平台(windows和Unix)的SQLite4构建包含了一个全局sqlite4_env对象,通常这个对象适配于所在平台。如果一个接口程序的参数中有一个指向sqlite4_env对象的指针,而且传给这个参数的指针是空指针时,这个接口程序就会使用默认的全局sqlite4_env对象。另外,某些应用可能要求在相同的地址空间上运行两个或者多个SQLite4实例,同时每个实例使用了各自不同的互斥原语,不同的内存堆以及不同的时间日期函数等等。SQLite4通过对每个数据库实例创建不同的sqlite4_env对象来满足这种需求。sqlite4_env对象中还废除了全局和静态变量,这样就可以非常容易地把SQLite4移植到哪些对静态或者全局数据提供有限支持的嵌入式系统中。

    更多详情见请继续阅读下一页的精彩内容:


    推荐阅读
    • 31.项目部署
      目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
    • 分享css中提升优先级属性!important的用法总结
      web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
    • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
      本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
    • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
    • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
    • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
    • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
      本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
    • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
    • 高质量SQL书写的30条建议
      本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
    • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
    • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
    • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
    • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
    • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
      本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
    • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
    author-avatar
    unforgettable602
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有