热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小巧、快速、稳定!我为什么选择使用Sqlite?

州的先生(https:zmister.com)在很多项目中都有使用到SQLite数据库作为数据存储的工具,其中包括一些桌面图形界面程序和线上的Web应用程序。至今为止,它们都运行良


州的先生(https://zmister.com)在很多项目中都有使用到SQLite数据库作为数据存储的工具,其中包括一些桌面图形界面程序和线上的Web应用程序。至今为止,它们都运行良好,SQLite没有对他们带来任何速度和效率方面的问题。


很多人一听到SQLite数据库,就觉得这是一个很低级,效率很差的数据库,从某方面来说其确实如此。但是就像抛开剂量谈毒性都是耍流氓一样,抛开应用场景谈一个技术或产品的优劣,也是耍流氓。今天,州的先生结合SQLite官网的说明和自己实际的开发体验,谈谈SQLite,方便大家对SQLite有一个更好的了解。



文章目录



  • 一、SQLite有哪些特点?

  • 二、SQLite适用于哪些场景?

  • 三、SQLite不适合于哪些场景?



一、SQLite有哪些特点?



  • 无需进行管理和配置,下载就可以用,

  • 完整的SQL功能支持,包含SQL的高级功能,比如部分索引、JSON、窗口函数、表达式等等;

  • 数据库存储在单机单文件,一个.sqlite文件就包含了SQLite数据库所有的东西,迁移、调试和测试的时候简直不要太方便;

  • 支持千兆字节大小的数据库文件;

  • 代码的占用量少;

  • API简单易用;

  • 快速,在某些情况下甚至比直接进行文件IO要快;

  • 自包含,没有任何外部依赖,新手最愁的就是一个软件有各种依赖性了,sqlite不需要为数据库的安装、配置、依赖性发愁;

  • 跨平台,Windows、Mac、Linux、Android、IOS……常见的开发平台、应用平台上都能使用;

  • 开源且免费;

  • 拥有独立的命令行界面,可用于管理SQLite数据库;

  • ……


二、SQLite适用于哪些场景?


1、嵌入式设备和物联网设备


因为SQLite数据库不需要进行管理和维护,因此不需要额外的数据库运维人员来管理、维护和支持。所以非常适合在手机、机顶盒、游戏机、照相机等单机和移动设备中使用,用来存储设备的数据。


2、应用程序的磁盘文件格式


基于sqlite单文件的特点,其很适合用来作为桌面应用程序和移动应用程序的磁盘文件存储格式。就像在嵌入式设备中的应用一样,sqlite可以在应用程序中作为程序内容的本地存储文件,既方便操作,效率也高;像很多的手机APP也是使用Sqlite作为其静态数据的存储介质。下图就是手机淘宝APP里面一个sqlite文件。



3、网站


对于大多数低流量的网站来说,SQLite可以很好地支撑其数据服务。按照SQLite官网的说法,保守估计,在任何每天点击量少于10万的网站上,SQLite都不会是其访问的瓶颈。同时,SQLite官网亦提及,多个进程可以同时打开同一个数据库,多个进程可以同时执行SELECT,但是,在任何时候,只有一个进程可以对数据库进行更改。也就是说,如果你的网站主要是一个展示类型的网站,没有大并发、访问者不会密集地提交数据,基本上,SQLite是没问题的。


当然,对于现在没有高并发、承担不了千万级别的流量都不好意思拿上台面说的行情,只能自个儿偷偷用了。


4、数据分析


很多做数据分析的人接触到的数据一般有两种,文件类型(比如CSV,XLSX等)和数据库类型。


对于文件类型的数据,要是数据量小,可能就直接在Excel中一顿操作出结果了,但是如果数据量大,用Excel打开和加载就是一个比较费时间的事情。(曾经,一个同事就手握数个几兆和十几兆的CSV文件,在Excel里面关联数据进行查询计算,电脑直接卡得半个小时动一下。)这种情况下,将CSV文件的数据导入到SQLite中,然后用SQL进行数据分析就比较好。


5、教育和学习SQL


在大学期间,我们的数据库学习的是SQLServer 2005,当时老师专门腾了一节课的时间让我们在自己的电脑上下载和安装它。结果有的同学的电脑,死活就是安装不了,无奈只能和别的同学共用一台电脑来练习。


对SQLite来说,这种情况就不会出现,因为其安装简单、单文件的特点,学生可以很快地使用其学习SQL,并且可以方便地将数据库文件进行分享和传输。


三、SQLite不适合于哪些场景?


1、高并发和写密集型网站和应用


前面说了,SQLite适合于高查询、低写入类型地网站,如果一个网站有非常多地写操作,那SQLite就不再适合它了。SQLite支持无限数量的同时读取,但是在任何时候都只允许一个写入,虽然可以排队,但是无法应对网站高并发的要求。


除了网站,依赖网络来传输数据的B/S架构的桌面应用程序和移动应用程序也在此列。


2、大型地数据集


据SQLite官网说明,SQLite数据库的大小限制在140TB,对于更大型的数据,将其进行分布式存储无疑是更好的选择。


四、最后


所以,如果你的项目没有很高的并发、没有密集的写入、数据量不是超级大,数据库和数据库引擎不需要分离,那就放心的使用SQLite这个小巧好用的数据库吧!




推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
author-avatar
雷神鑫源义_341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有