跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关系型数据库入门的疑问: SQLite 定位是?
未分類
18 1 月 2021

关系型数据库入门的疑问: SQLite 定位是?

关系型数据库入门的疑问: SQLite 定位是?

資深大佬 : fiveelementgid 6

主要是做.NET 开发,是不是没必要过一遍 SQLite,而是直接去从 Mysql/MarianDB 学起

大佬有話說 (74)

  • 資深大佬 : rbe

    手机上用的多吧。https://www.sqlite.org/mostdeployed.html

  • 資深大佬 : opengps

    小而轻,客户端用途较多,比如手机端,比如随着客户端自己保存的数据

  • 資深大佬 : eason1874

    SQLite 是文件数据库,不需要服务器,跟 MySQL 不是一个类型。

    区别就是,如果你要使用 MySQL 你得先安装 MySQL 服务,SQLite 就不用。只要能写入文件,你就能弄个 SQLite 数据库,适合脱机。

  • 資深大佬 : matrix67

    单机版数据库。

    ps 主头像和我是一个人么

  • 資深大佬 : danielmiao

    小项目的临时存储可以用,比自己写文件方便

  • 資深大佬 : Areym

    .net 的话一般是开发单机桌面程序会用到 SQLite 我至今没用过

  • 資深大佬 : seki

    基本上都是用 DAO 的吧,方法都是封装好的,直接和数据库对话的机会没有这么多,不需要先学?

    @matrix67 不是,这个是公主优衣

  • 資深大佬 : janus77

    不需要服务器,不用开启连接,直接就可以当纯粹的储存功能用。

  • 資深大佬 : ferock

    较少并发,较少数据量,需要关系型数据模型

    例如,客户端本地信息存储,微信似乎就是用 SQLite

  • 資深大佬 : jing8956

    学.Net 的话数据库不是都从 SQL Server 学起。。。至少我学校里的课程是这样
    但是学 SQLite 也行,做本地客户端数据持久化的话除了直接序列化成二进制 /XML/JSON 保存成以外,
    第二选择也就是这个又小又轻量的 SQL 关系型数据库了
    (听说是真的轻到能运行在低性能 Iot 设备上的
    ( docs.microsoft.com 很多做本地客户端还有 Entity Framework Core 都能见到 SQLite 的教程了

  • 資深大佬 : justforlook44444

    轻量级

  • 資深大佬 : xarthur

    举个例子,如果你要写个 QQ 机器人用来实现多个群订阅 RSS 功能。这里储存订阅信息就可以用 SQLite,非常轻量,服务端不用装额外的软件,这个服务本身数据量也不大,但是有需要有结构化的数据。

  • 資深大佬 : hoyixi

    例如你要是做 WinForm 之类桌面程序,需要存点复杂的数据,除了 XML 之类,还可以在你程序本地目录下存个 SQLite 小数据库。

    有时候做快速原型开发,本地开发环境直接用个 SQLite, 一些适配代码(比如 ORM )写好,就可以变个配置无缝切换到 MySQL 之类的数据库

    是的,可以不学,学会了 MySQL,这玩意看看就会

  • 資深大佬 : nuistzhou

    轻量级数据库,上项目一般不会用的吧

  • 資深大佬 : SilenceLL

    太多了吧,客户端软件很多都是。有道云笔记,onepassword enpass,本地存储结构化数据,基本上都会用到吧

  • 資深大佬 : uptonking

    @nuistzhou

  • 資深大佬 : gstqc

    Sqlite 的应用非常广泛的
    比如 chrome, firefox, 微信

  • 資深大佬 : luchong

    我也做.NET 的 这个还是得看你使用场景了 你要是做 Web 方向的 肯定就 SQLServer 或者 Mysql 之类的 做客户端的 比如 Winform WPF Xamarin 多少还是要了解一下 SQLite 轻量化的关系型数据库,只依赖几个 dll,实际存储的数据在一个 db 文件里 非常适合 客户端脱机使用 ,我在做呼叫中心调度系统时,就用上了 SQLite,每一个通话记录 或需要临时存储大量结构化数据时 我都会往 SQLite 存一份

  • 資深大佬 : h82258652

    非服务型关系型数据库
    反正 sql 把增删改查,join,top x 这些学完就差不多了,也就面试问问。做.net 直接上 ef core,粗暴导航属性快准狠,正式项目除非特别需要性能的地方,不然一律不写 sql

  • 資深大佬 : fox0001

    @rbe #1 因为当年 Android App 选择了 SQLite 做数据存储

  • 資深大佬 : Kiriri

    客户端软件一般都会用到吧

  • 主 資深大佬 : fiveelementgid

    @rbe
    @opengps
    @eason1874 大概明白了
    @matrix67 就是非 C/S 架构吧

  • 主 資深大佬 : fiveelementgid

    @matrix67 不是
    @danielmiao 好
    @Areym 不做桌面开发,溜了溜了

  • 主 資深大佬 : fiveelementgid

    @seki EF Core…….还好吧,只是觉得该学学了

  • 主 資深大佬 : fiveelementgid

    @seki EF Core…….还好吧,只是觉得该学学了
    @janus77
    @ferock 那为啥不直接用 json/XML/文件

  • 主 資深大佬 : fiveelementgid

    @jing8956 SQL Server 要钱,Express 免费,但是不想整

  • 主 資深大佬 : fiveelementgid

    @justforlook44444
    @xarthur
    @hoyixi
    @nuistzhou
    @SilenceLL 就是轻量级,一般只有小工具能用?那我直接上 Mariadb 好了

  • 主 資深大佬 : fiveelementgid

    @h82258652 对,我主要是想准备面试(⊙_◎)

  • 資深大佬 : janus77

    @fiveelementgid #25 同样的问题可以直接用在一切数据库上……这就是数据库(database)和 json/XML/文件的区别了啊, 可以储存更复杂,结构化的数据,支持加密,支持跨平台,性能不错,版本升级,等一切数据库该有的优势。

  • 主 資深大佬 : fiveelementgid

    @janus77 也对,保留了数据库的 feature 同时也不会太笨重

  • 資深大佬 : lawler

    定位是:嵌入式数据库。
    手机端 app,桌面端软件等,服务端一般不需要。因为本身不具备完整数据库特性。单一数据库,单一线程,单一读写访问,不支持大数据,性能差强人意,但会看到同一个应用有非常多的 xx.db 文件来间提高性能,常见的,如几乎所有 Androidapp 都在使用,部分 iOSapp 在使用,及桌面端 qq 微信旺旺 chrome 等。几乎都是 sqlite 数据库。

    不学的话,没什么大问题。缺少一种嵌入式解决方案而已。

  • 資深大佬 : no1xsyzy

    跑一些(介于单元测试和集成测试之间的)测试时用(虽然这种情况称呼为单元测试也没人反对),反正大部分 ORM 会解决不同 SQL 方言的问题
    权限要求极低,只需要能执行代码能访问文件就能运行

    另一方面,你要记得一些弊端:
    并发低(因为依赖文件的读写锁,跨线程等于全库加锁)
    跨机器难(包括数据库单独机器和多服务器
    无法缓存优化后的 SQL (未确认

  • 資深大佬 : yanzhiling2001

    学,sqlite 再单机上应用很广

  • 資深大佬 : bthulu

    @lawler 性能超强的好吧, 单机单线程甩 mysql 和 oracle 一条街

  • 資深大佬 : codehz

    SQLite3 存大量数据根本不是问题,唯一的问题是只能单机用,所以只要没有水平扩展的需求,基本都能用 SQLite3 解决。。。

  • 資深大佬 : star7th

    个人觉得 sqlite 是不需要专门花时间学的。如果会 mysql,学习了 sql 语法,基本上能举一反三大部分关系型数据库

  • 資深大佬 : tanghongkai

    本地的小数据库用这个比较方便,比如 temphis.db

  • 資深大佬 : lancelock

    你以为 sqlite 是 mysql 之类的前置条件吗?并不是,他们之间并没有依赖关系

  • 資深大佬 : tairan2006

    客户端用的数据库

  • 資深大佬 : QBugHunter

    SQLITE3 很好很强大,最大的优点就是不用部署,直接编译进程序里。

  • 主 資深大佬 : fiveelementgid

    @lawler 好,没这个需求,不管了。基本的 json 还是会的
    @no1xsyzy
    @yanzhiling2001 不学单机应用……
    @QBugHunter 这是因为他是 C 的一个库?

  • 資深大佬 : jing8956

    @fiveelementgid 你说的这两个都是商用授权
    怕不是不知道有全功能免费版只许可在非生产环境下用作开发和测试的 Developer 版就在官网上往下拉一屏幕的左边
    但我前公司才不管这些,Developer 版直接放生产

  • 主 資深大佬 : fiveelementgid

    @jing8956 看到有 developer 版本的,还有一个免费的 Express 轻量版本的
    …….还是用 Mariadb 好了

  • 資深大佬 : lchy

    @codehz 大概支持多少数据,想在单机上用,1000 万行数据支持够么?

  • 資深大佬 : codehz

    @lchy ( PC 单机限定的话完全可以用,反正别的选项不会比这个更好,这里说的是能用,如果你数据库有几十个 T 的话,不要指望能实现快速查询)

  • 資深大佬 : ruyu

    SQLite 真的是太棒了!

  • 資深大佬 : yanzhiling2001

    别说不学单机应用,你迟早会用到的

  • 資深大佬 : hotsymbol

    .Net 开发??? 现在还有人用这个东西吗? 再说.Net 开发难道不是应该从 SQL Server 开始用吗 ?如此古老的语言怎么配得上 MariaDB 和 MySQL

  • 資深大佬 : feelapi

    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 这种对象存储中。

  • 資深大佬 : no1xsyzy

    @fiveelementgid 你说的单机是指?为了方便定义,我来问下你的反义
    是指只用分布式系统:那可能存在每个微服务需要自带一个缓存的情况(虽然通常用程序语言数据结构比较方便)。
    是指只使用 B/S 架构:那还行
    存在 C/S 架构:客户端可能为了效率需要一个本地存储 / 缓存。

    不过总体而言,没必要特地去学,我估计你现在需要的是 SQL 的基础知识而不是 SQL 某一特定实现的情况。
    那样的话,SQLite 和其他一样都是一个选择而已。
    如果会 SQL 了,等要用了再学也不迟,反正不难。

    另一方面其实是单文件 NoSQL 目前没有能打的(

  • 資深大佬 : VTEX9527

    单机内嵌?

  • 資深大佬 : systemcall

    连单片机都能跑。C/S 架构和单机软件用来存数据,省事
    Chromium 的历史记录就是放在 SQLite 里面。SQLite 再怎么说也是一个数据库吧,而且单个应用用的时候性能不算差,如果配置很低的话反而非常有优势

  • 資深大佬 : zeroDev

    sqlite 开发友好

  • 資深大佬 : tanranran

    @lchy #44 1 亿都可以的

  • 資深大佬 : KallyDev

    @lchy 储存过近十亿行数据,加完索引后性能依旧可观。

  • 主 資深大佬 : fiveelementgid

    @yanzhiling2001 别骂了别骂了( ;∀;)日后有需求再说

  • 主 資深大佬 : fiveelementgid

    @hotsymbol 还有啥配不配的吗….都是 Relative 数据库,没啥大区别
    (。ŏ﹏ŏ)我怀疑你在钓鱼

  • 主 資深大佬 : fiveelementgid

    @no1xsyzy SQL 基础还是会的( ;∀;),就一个选型的问题

  • 資深大佬 : shuax

    这个叫做嵌入式数据库

  • 資深大佬 : RickyC

    不用部署就可以运行.
    就像当年 Classic ASP 时代的 mdb 文件

  • 資深大佬 : bsg1992

    @hotsymbol 你这个 der 天天跑出来喷 dotnet, 有劲嘛

  • 資深大佬 : daysv

    sqlite 的性能还挺不错的, 你可以理解为客户端的数据库。

  • 主 資深大佬 : fiveelementgid

    @bsg1992 原来这个人就是那个著名的 C#黑啊,我 block 了,谢谢提醒

  • 資深大佬 : mostkia

    开箱即用(无需配置),学习成本低(会 sql 就能用),运用广泛(几乎所有开发环境都支持),这就足够了

  • 資深大佬 : wolfan

    别的咱不晓得,SQLite 最早是给导弹写的……

  • 資深大佬 : smallpython

    磁盘 io 肯定比网络 io 快多了

  • 資深大佬 : chouchoui

    @bsg1992 谢谢提醒,先 B 了再说

    @fiveelementgid .NET 的话还是用 SQL Server 最佳组合,无脑 EF Core,转换到 SQLite/MySQL/MariaDB 去给 EF Core 换一个 Provider 就行了,不过可能存在一些细微的兼容性问题

  • 資深大佬 : vone

    @bsg1992,这个 @hotsymbol 一看就是个粉转黑,被巨硬坑惨的老哥。

  • 主 資深大佬 : fiveelementgid

    @mostkia 吼
    @smallpython 这个肯定,但是不支持 Async
    @chouchoui SQL Server 收费,用的 MariaDB,兼容性其实没啥问题。

  • 資深大佬 : zzzmh

    我接触到的是 java 的桌面程序,可以在用户本地存一些数据,javafx + sqllite 3 个系统都能支持

  • 資深大佬 : leekafai

    嵌入式

  • 資深大佬 : shyling

    最大的区别是 mysql/pg 是 cs 模式的,sqlite 是 embed

  • 資深大佬 : circleee

    @matrix67 咱俩头像是一个

  • 資深大佬 : hotsymbol

    @vone 这都被你看出来了。曾经我是个忠实的.Net Core 开发。曾几何时。C# 那些领先的优势全都没有了。Azure 还贵得出奇
    @bsg1992 哎。现在的年轻人。你好好去读一下 CSharp Proposal 吧朋友,明显是全面领先到全面被超越的历史

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具