基于SQLite如何设计应用程序,拆散,散,还的散!
❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3300人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近400 9群 200+,开10群PolarDB专业学习群100+)
非常感谢大家的支持,关注SQLite的人非常多,让我真的没有想到,公司的需求和大家的支持,让我有了更多工作的动力。今天我们来说说深入的部分就是SQLite开发需要注意什么,基于SQLite上的开发需要注意什么。
首先我们需要确认一个事情,SQLite服务的场景,数据库应对不同的场景,选错场景将直接让你的应用和数据库都成为互相怒视的彼此。
那么SQLite适合什么情况的开发或者业务
1 SQLite适合多种操作系统下部署的业务,比如IOS,Android,Linux ,Windows,甚至是一些国产操作系统。所以他的适应面非常广,为什么我们抛弃了PostgreSQL,也是这个原因,在不同的操作系统上PostgreSQL表现方式和安装的难易程度都相对SQLite "不可控”。
2 针对SQLite 我们并不能完全把他当成一个数据库库,或者传统数据库使用,SQLite是一个临时存储数据,或者面对个人操作,或者非高并发的应用环境来进行数据写入的数据库系统。
3从程序的设计理念上,针对SQLite的应用我们要有更多的注意,以及设计上思路的转变。
1 多读单写,让应用程序设计抛弃一个库承载数据的
上图就是使用SQLite 和 PG在终端应用程序设计的不同点,使用PostgreSQL 会让应用程序设计的更加的简单,PG本身是支持高并发的数据库产品,读写高并发,在线下终端使用,那是完全够用一库能顶住。
而如果更换为sqLite,那么情况就变化了,你可以返现整体的设计中,一个应用逻辑一个实例,甚至有的原来应用要进行拆分,对于需要并发写的应用,针对表可能还要拆分,把他们放到不同的SQLite的实例中,因为SQLite 不是表锁,是库锁,也就是只要你表里面有一个表进行数据的写入,必然就加文件锁,加完后,你的其他表也不能写入数据。
下面就进入到这个程序设计的重点:
SQLite 的锁是数据库文件级别的。只要在一个表上发生写入 —— 整个数据库文件都会进入 RESERVED/EXCLUSIVE 锁状态,其他写入就只能排队。
如果真正需要并发的情况
1 原来放在一张表里的数据,现在可能要拆成多张表、多库文件才能提高并发
2 原来一个进程可以处理的业务,现在要拆成多个进程/微服务式的小模块
3 原来 PostgreSQL 一个库足以支撑完整业务的数据模型,现在 SQLite 下可能要拆分成 N 个 SQLite 文件实例,才能保证业务在高峰时不会出现“写锁卡死所有人”的情况。
使用SQLite 的应用程序在设计中,必须考虑并发写的问题,如果不考虑会导致,即使非常短的写操作之间也会互相阻塞,用户界面会出现卡顿,无响应,一些之前没有延迟的数据显示,可能会有延迟的可能性。
然后考研开发如何,进行拆库,拆表,拆字段的,在非常熟悉业务的情况下,如何控制并发的,基于此的开发方式就要提升技能了。
所以考虑到这里,没有十全十美的数据库,只有适合业务场景的数据库的产品。PG单机市场和终端市场中的问题,主要在于运维,因为个人的终端是不会给你vacuum的时间,做大库备份的时间,那些终端说关机就关机,没有人会考虑你,突发断电和关机时的数据丢失的问题,以及开机数据回滚需要的时间,所以这也是为什么此次移动端抛弃了使用这么多年的PostgreSQL的根本原因,简单,能在简单,是终端对数据库的一个要求,下期我们来说说SQLite中的表设计的问题。
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?
OceanBase Hybrid search 能力测试,平换MySQL的好选择
写了3750万字的我,在2000字的OB白皮书上了一课--记 《OceanBase 社区版在泛互场景的应用案例研究
OceanBase 6大学习法--OBCA视频学习总结第六章
OceanBase 6大学习法--OBCA视频学习总结第五章--索引与表设计
OceanBase 6大学习法--OBCA视频学习总结第五章--开发与库表设计
OceanBase 6大学习法--OBCA视频学习总结第四章 --数据库安装
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
OceanBase 架构学习--OB上手视频学习总结第二章 (OBCA)
OceanBase 6大学习法--OB上手视频学习总结第一章
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
“合体吧兄弟们!”——从浪浪山小妖怪看OceanBase国产芯片优化《OceanBase “重如尘埃”之歌》
MongoDB “升级项目” 大型连续剧(3)-- 自动校对代码与注意事项
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
MongoDB “升级项目” 大型连续剧(1)-- 可“生”可不升
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 麻烦专业点,不懂可以问,别这么用行吗 ! --TTL
免费PolarDB云原生课程,听课“争”礼品,重塑云上知识,提高专业能力
非“厂商广告”的PolarDB课程:用户共创的新式学习范本--7位同学获奖PolarDB学习之星
“当复杂的SQL不再需要特别的优化”,邪修研究PolarDB for PG 列式索引加速复杂SQL运行
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 新版本就一定好--由培训现象让我做的实验
说我PG Freezing Boom 讲的一般的那个同学,专帖给你,看看这次可满意
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
这个 PostgreSQL 让我有资本找老板要 鸡腿 鸭腿 !!
MySQL相关文章
一篇为MySQL用户,分析版本核心差异的文章--8.028-8.4的差异
那个MySQL大事务比你稳定,主从延迟低,为什么? Look my eyes! 因为宋利兵宋老师