主要是做.NET 开发,是不是没必要过一遍 SQLite,而是直接去从 Mysql/MarianDB 学起
1
rbe 2021-01-23 17:34:32 +08:00
|
2
opengps 2021-01-23 17:39:09 +08:00
小而轻,客户端用途较多,比如手机端,比如随着客户端自己保存的数据
|
3
eason1874 2021-01-23 17:40:28 +08:00
SQLite 是文件数据库,不需要服务器,跟 MySQL 不是一个类型。
区别就是,如果你要使用 MySQL 你得先安装 MySQL 服务,SQLite 就不用。只要能写入文件,你就能弄个 SQLite 数据库,适合脱机。 |
4
matrix67 2021-01-23 17:40:57 +08:00
单机版数据库。
ps 楼主头像和我是一个人么 |
5
danielmiao 2021-01-23 17:42:47 +08:00
小项目的临时存储可以用,比自己写文件方便
|
6
Areym 2021-01-23 17:44:13 +08:00
.net 的话一般是开发单机桌面程序会用到 SQLite 我至今没用过
|
7
seki 2021-01-23 17:56:48 +08:00
|
8
janus77 2021-01-23 18:01:29 +08:00
不需要服务器,不用开启连接,直接就可以当纯粹的储存功能用。
|
9
ferock 2021-01-23 18:03:44 +08:00
较少并发,较少数据量,需要关系型数据模型
例如,客户端本地信息存储,微信似乎就是用 SQLite |
10
jing8956 2021-01-23 18:18:08 +08:00
学.Net 的话数据库不是都从 SQL Server 学起。。。至少我学校里的课程是这样
但是学 SQLite 也行,做本地客户端数据持久化的话除了直接序列化成二进制 /XML/JSON 保存成以外, 第二选择也就是这个又小又轻量的 SQL 关系型数据库了 (听说是真的轻到能运行在低性能 Iot 设备上的 ( docs.microsoft.com 很多做本地客户端还有 Entity Framework Core 都能见到 SQLite 的教程了 |
11
justforlook44444 2021-01-23 20:00:40 +08:00
轻量级
|
12
xarthur 2021-01-23 20:09:44 +08:00 via iPhone
举个例子,如果你要写个 QQ 机器人用来实现多个群订阅 RSS 功能。这里储存订阅信息就可以用 SQLite,非常轻量,服务端不用装额外的软件,这个服务本身数据量也不大,但是有需要有结构化的数据。
|
13
hoyixi 2021-01-23 20:11:49 +08:00
例如你要是做 WinForm 之类桌面程序,需要存点复杂的数据,除了 XML 之类,还可以在你程序本地目录下存个 SQLite 小数据库。
有时候做快速原型开发,本地开发环境直接用个 SQLite, 一些适配代码(比如 ORM )写好,就可以变个配置无缝切换到 MySQL 之类的数据库 是的,可以不学,学会了 MySQL,这玩意看看就会 |
14
nuistzhou 2021-01-23 20:29:09 +08:00 via iPhone
轻量级数据库,上项目一般不会用的吧
|
15
SilenceLL 2021-01-23 21:33:15 +08:00 via iPhone
太多了吧,客户端软件很多都是。有道云笔记,onepassword enpass,本地存储结构化数据,基本上都会用到吧
|
17
0ZXYDDu796nVCFxq 2021-01-23 22:23:40 +08:00 via Android
Sqlite 的应用非常广泛的
比如 chrome, firefox, 微信 |
18
luchong 2021-01-23 22:24:03 +08:00
我也做.NET 的 这个还是得看你使用场景了 你要是做 Web 方向的 肯定就 SQLServer 或者 Mysql 之类的 做客户端的 比如 Winform WPF Xamarin 多少还是要了解一下 SQLite 轻量化的关系型数据库,只依赖几个 dll,实际存储的数据在一个 db 文件里 非常适合 客户端脱机使用 ,我在做呼叫中心调度系统时,就用上了 SQLite,每一个通话记录 或需要临时存储大量结构化数据时 我都会往 SQLite 存一份
|
19
h82258652 2021-01-23 22:29:58 +08:00
非服务型关系型数据库
反正 sql 把增删改查,join,top x 这些学完就差不多了,也就面试问问。做.net 直接上 ef core,粗暴导航属性快准狠,正式项目除非特别需要性能的地方,不然一律不写 sql |
21
Kiriri 2021-01-23 22:49:09 +08:00
客户端软件一般都会用到吧
|
22
fiveelementgid OP |
23
fiveelementgid OP |
24
fiveelementgid OP @seki EF Core.......还好吧,只是觉得该学学了
|
25
fiveelementgid OP |
26
fiveelementgid OP @jing8956 SQL Server 要钱,Express 免费,但是不想整
|
27
fiveelementgid OP |
28
fiveelementgid OP @h82258652 对,我主要是想准备面试(⊙_◎)
|
29
janus77 2021-01-23 23:44:13 +08:00
@fiveelementgid #25 同样的问题可以直接用在一切数据库上……这就是数据库(database)和 json/XML/文件的区别了啊, 可以储存更复杂,结构化的数据,支持加密,支持跨平台,性能不错,版本升级,等一切数据库该有的优势。
|
30
fiveelementgid OP @janus77 也对,保留了数据库的 feature 同时也不会太笨重
|
31
lawler 2021-01-24 01:39:41 +08:00
定位是:嵌入式数据库。
手机端 app,桌面端软件等,服务端一般不需要。因为本身不具备完整数据库特性。单一数据库,单一线程,单一读写访问,不支持大数据,性能差强人意,但会看到同一个应用有非常多的 xx.db 文件来间提高性能,常见的,如几乎所有 Androidapp 都在使用,部分 iOSapp 在使用,及桌面端 qq 微信旺旺 chrome 等。几乎都是 sqlite 数据库。 不学的话,没什么大问题。缺少一种嵌入式解决方案而已。 |
32
no1xsyzy 2021-01-24 02:12:14 +08:00
跑一些(介于单元测试和集成测试之间的)测试时用(虽然这种情况称呼为单元测试也没人反对),反正大部分 ORM 会解决不同 SQL 方言的问题
权限要求极低,只需要能执行代码能访问文件就能运行 另一方面,你要记得一些弊端: 并发低(因为依赖文件的读写锁,跨线程等于全库加锁) 跨机器难(包括数据库单独机器和多服务器 无法缓存优化后的 SQL (未确认 |
33
40EaE5uJO3Xt1VVa 2021-01-24 08:55:01 +08:00
学,sqlite 再单机上应用很广
|
35
codehz 2021-01-24 10:15:05 +08:00 via Android
SQLite3 存大量数据根本不是问题,唯一的问题是只能单机用,所以只要没有水平扩展的需求,基本都能用 SQLite3 解决。。。
|
36
star7th 2021-01-24 10:16:28 +08:00
个人觉得 sqlite 是不需要专门花时间学的。如果会 mysql,学习了 sql 语法,基本上能举一反三大部分关系型数据库
|
37
tanghongkai 2021-01-24 10:58:10 +08:00 via Android
本地的小数据库用这个比较方便,比如 temphis.db
|
38
lancelock 2021-01-24 11:12:37 +08:00 via iPhone
你以为 sqlite 是 mysql 之类的前置条件吗?并不是,他们之间并没有依赖关系
|
39
tairan2006 2021-01-24 13:34:52 +08:00
客户端用的数据库
|
40
QBugHunter 2021-01-24 14:19:28 +08:00
SQLITE3 很好很强大,最大的优点就是不用部署,直接编译进程序里。
|
41
fiveelementgid OP |
42
jing8956 2021-01-24 16:21:04 +08:00
@fiveelementgid 你说的这两个都是商用授权
怕不是不知道有全功能免费版只许可在非生产环境下用作开发和测试的 Developer 版就在官网上往下拉一屏幕的左边 但我前公司才不管这些,Developer 版直接放生产 |
43
fiveelementgid OP @jing8956 看到有 developer 版本的,还有一个免费的 Express 轻量版本的
.......还是用 Mariadb 好了 |
44
Hxu2M811KVSJqN75 2021-01-24 17:15:56 +08:00
@codehz 大概支持多少数据,想在单机上用,1000 万行数据支持够么?
|
45
codehz 2021-01-24 17:50:01 +08:00 via Android
@lchy ( PC 单机限定的话完全可以用,反正别的选项不会比这个更好,这里说的是能用,如果你数据库有几十个 T 的话,不要指望能实现快速查询)
|
46
ruyu 2021-01-24 18:39:14 +08:00
SQLite 真的是太棒了!
|
47
40EaE5uJO3Xt1VVa 2021-01-24 18:48:40 +08:00
别说不学单机应用,你迟早会用到的
|
48
hotsymbol 2021-01-24 21:04:35 +08:00
.Net 开发??? 现在还有人用这个东西吗? 再说.Net 开发难道不是应该从 SQL Server 开始用吗 ?如此古老的语言怎么配得上 MariaDB 和 MySQL
|
49
feelapi 2021-01-24 21:28:39 +08:00
sqlite 可以玩出很多花样的,比如这个:
https://www.sqlite.org/sessionintro.html In other words, the session extension provides a facility for SQLite database files that is similar to the unix patch utility program, or to the "merge" capabilities of version control systems such as Fossil, Git, or Mercurial. 你可以把一个大的数据库,保存为一系列的 changeset,需要的时候合并成为可用的 sqlite 数据库。这些 changeset,可以放在 aws s3 这种对象存储中。 |
50
no1xsyzy 2021-01-24 21:33:24 +08:00
@fiveelementgid 你说的单机是指?为了方便定义,我来问下你的反义
是指只用分布式系统:那可能存在每个微服务需要自带一个缓存的情况(虽然通常用程序语言数据结构比较方便)。 是指只使用 B/S 架构:那还行 存在 C/S 架构:客户端可能为了效率需要一个本地存储 / 缓存。 不过总体而言,没必要特地去学,我估计你现在需要的是 SQL 的基础知识而不是 SQL 某一特定实现的情况。 那样的话,SQLite 和其他一样都是一个选择而已。 如果会 SQL 了,等要用了再学也不迟,反正不难。 另一方面其实是单文件 NoSQL 目前没有能打的( |
51
VTEX9527 2021-01-24 22:04:31 +08:00
单机内嵌?
|
52
systemcall 2021-01-24 23:04:35 +08:00
连单片机都能跑。C/S 架构和单机软件用来存数据,省事
Chromium 的历史记录就是放在 SQLite 里面。SQLite 再怎么说也是一个数据库吧,而且单个应用用的时候性能不算差,如果配置很低的话反而非常有优势 |
53
zeroDev 2021-01-24 23:09:09 +08:00 via Android
sqlite 开发友好
|
56
fiveelementgid OP @yanzhiling2001 别骂了别骂了( ;∀;)日后有需求再说
|
57
fiveelementgid OP @hotsymbol 还有啥配不配的吗....都是 Relative 数据库,没啥大区别
(。ŏ﹏ŏ)我怀疑你在钓鱼 |
58
fiveelementgid OP @no1xsyzy SQL 基础还是会的( ;∀;),就一个选型的问题
|
59
shuax 2021-01-25 08:53:16 +08:00
这个叫做嵌入式数据库
|
60
RickyC 2021-01-25 09:16:13 +08:00
不用部署就可以运行.
就像当年 Classic ASP 时代的 mdb 文件 |
62
daysv 2021-01-25 09:33:59 +08:00
sqlite 的性能还挺不错的, 你可以理解为客户端的数据库。
|
63
fiveelementgid OP @bsg1992 原来这个人就是那个著名的 C#黑啊,我 block 了,谢谢提醒
|
64
mostkia 2021-01-25 10:00:11 +08:00
开箱即用(无需配置),学习成本低(会 sql 就能用),运用广泛(几乎所有开发环境都支持),这就足够了
|
65
wolfan 2021-01-25 10:01:38 +08:00
别的咱不晓得,SQLite 最早是给导弹写的……
|
66
smallpython 2021-01-25 10:05:55 +08:00
磁盘 io 肯定比网络 io 快多了
|
67
chouchoui 2021-01-25 10:18:39 +08:00
@bsg1992 谢谢提醒,先 B 了再说
@fiveelementgid .NET 的话还是用 SQL Server 最佳组合,无脑 EF Core,转换到 SQLite/MySQL/MariaDB 去给 EF Core 换一个 Provider 就行了,不过可能存在一些细微的兼容性问题 |
69
fiveelementgid OP |
70
zzzmh 2021-01-25 10:50:20 +08:00
我接触到的是 java 的桌面程序,可以在用户本地存一些数据,javafx + sqllite 3 个系统都能支持
|
71
leekafai 2021-01-25 11:32:36 +08:00
嵌入式
|
72
shyling 2021-01-25 11:42:01 +08:00
最大的区别是 mysql/pg 是 cs 模式的,sqlite 是 embed
|
74
hotsymbol 2021-01-26 00:44:24 +08:00
@vone 这都被你看出来了。曾经我是个忠实的.Net Core 开发。曾几何时。C# 那些领先的优势全都没有了。Azure 还贵得出奇
@bsg1992 哎。现在的年轻人。你好好去读一下 CSharp Proposal 吧朋友,明显是全面领先到全面被超越的历史 |