热门标签 | 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这个小巧好用的数据库吧!




推荐阅读
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
    湖上湖返回与带有给定字符串名的类或接口相关联的Class对象。调用此方法等效于:Class.forName(className,true,currentLoader) ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
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社区 版权所有