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




推荐阅读
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 当 WebLogic 连接的数据源数据库密码发生更改时,需要在域目录的 config 文件夹下的 jdbc 配置文件中更新相应的密码。本文将详细介绍如何安全地修改和验证这些配置文件中的加密密码。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 开发笔记:由数据库某字段存数组引发的json_encode/serialize思考
    开发笔记:由数据库某字段存数组引发的json_encode/serialize思考 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
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社区 版权所有