1 James369 2024-01-25 23:05:22 +08:00 ![]() 好比电脑和手机,飞机和航模 |
![]() | 2 wheat0r 2024-01-25 23:37:18 +08:00 还能这么比 |
3 Thiece 2024-01-25 23:39:15 +08:00 应为功能少,存储过程、触发器、数据分区、网络访问、复制功能、事务管理 SQLite 实现的怎么样 |
4 thevita 2024-01-25 23:44:06 +08:00 微信最初的版本 大小 457KB 现在的微信已经 奔着数百兆去了 而他核心功能基本差不多 |
5 kirory 2024-01-25 23:45:28 +08:00 需求不同 SQLite 会跑在各种设备上,MySQL 不用这样 |
![]() | 6 imydou 2024-01-26 02:13:09 +08:00 先不说复杂的,sqlite 才几种数据类型 |
7 drymonfidelia OP 需求是把数据库打包进客户端(好几张表数据量都过亿条),SQLite 加各种索引都撑不住,查询一次三分钟,只能考虑把 MySQL 打包进去,但是这东西也太大了 |
8 786375312123 2024-01-26 04:53:47 +08:00 ![]() 数据库打包进客户端?什么客户端? 什么样的奇才会想出来这种构架。 |
9 acapla 2024-01-26 05:31:34 +08:00 ![]() 让我想起了 GTA Online 开始的十分钟 for loop. |
10 dyv9 2024-01-26 06:29:31 +08:00 via Android ![]() 好奇,啥都客户端做了,你的服务器在做啥?如果没有服务器你为啥叫它客户端 |
![]() | 11 bkmi 2024-01-26 07:40:35 +08:00 via Android 多大的数据量,说实话几十 G 的微信聊天记录搜索都能秒搜,SQLite 已经足够强了(微信用的是修改版的 SQLite ,有开源,叫 WCDB ) |
![]() | 13 mightybruce 2024-01-26 07:52:14 +08:00 mysql 打入客户端 操作太神奇,你要调研几种嵌入式数据库, 而不是打包 mysql 比如 WCDB 、Firebird |
![]() | 14 netnr 2024-01-26 08:40:16 +08:00 via Android ![]() 换 DuckDB |
16 Worldispow 2024-01-26 08:41:15 +08:00 via Android oracle:你在说什么? |
![]() | 17 bianhui 2024-01-26 08:43:00 +08:00 ![]() 工业软件很多内网环境使用,没有服务端很正常,要求有数据检索数据存储功能也很正常。安装后启动一个 mysql 也很正常。你可以尝试 mysql 作为可选依赖性,用户配置,默认使 sqlite 看能不能分库。或者用一些比较小的数据库发行版 |
![]() | 18 opengps 2024-01-26 08:43:43 +08:00 SQLlite 面向文件,mysql 面向进程 |
19 ltmst 2024-01-26 08:51:05 +08:00 @drymonfidelia #7 你这种不是 sqlite 的问题,最简单的处理方式就是分库。多数据库文件,客户机上固态硬盘。 |
![]() | 20 ucando 2024-01-26 09:11:22 +08:00 好几个表都过亿条, 我想单单是库文件就不小了, 再加 mysql 那点大小又算啥? |
21 XXWHCA 2024-01-26 09:20:22 +08:00 它都带上 lite 字样了 |
![]() | 22 wanguorui123 2024-01-26 09:24:12 +08:00 SQLite 轻量,只保留核心功能。 |
![]() | 23 dcsite 2024-01-26 09:29:25 +08:00 ![]() @ucando 只有你发现了问题的重点! OP 几亿条数据,几个 G 的数据库,还去关注 MySQL 的大小,岂不是有些搞笑 |
24 nothingistrue 2024-01-26 09:33:45 +08:00 ![]() @bianhui #15 你要是真客户,术语解释会明明白白的将其限制为 Client - Server 中的 Client 。你要是程序员,那无需文档定义,约定上 Client 指的就是 Client - Server 中的 Client 。 |
25 helllkz 2024-01-26 09:34:23 +08:00 你赵鹏什么的都在踢中卫,他踢么?踢不了,没这个能力,知道吧 |
![]() | 26 weijancc 2024-01-26 09:56:59 +08:00 楼上说得对, 可以用 DuckDB |
![]() | 27 qiyilai 2024-0-26 10:01:16 +08:00 也没必要打包到客户端里吧,单独安装也行吧 |
![]() | 28 lifei6671 2024-01-26 10:15:18 +08:00 @786375312123 这是很常见的应用呀。很多 IOS 或 Android 的应用用来缓存本地数据会用到 sqlite 呀。你去看看微信的客户端,底层很多数据也是 sqlite 缓存的。 |
![]() | 29 june4 2024-01-26 10:21:01 +08:00 数据量和一条 sql 几分钟没什么关系,你这肯定全表扫描了,上 mysql 即使更快也有限。主要还是索引没弄好或者本身是全表统计。 以前呆过一家做企业软件的,里面的开发人员完全不懂索引优化,sql 随便写对执行计划怎样根本没这个意识。 |
![]() | 30 cccer 2024-01-26 11:20:56 +08:00 分表做好,我 20 亿数据 SQLite 没索引也是秒查,既然打包到客户端就不用考虑高并发问题。 |
![]() | 31 sujin190 2024-01-26 11:33:48 +08:00 这数据量如果客户端安装不能保证内存充足和 ssd ,估计换 mysql 也提升不了多少,不知道你的客户端安装环境怎样,ToB 的话其实客户端大个几百兆无所谓,ToC 的话安装环境估计也无法保证资源充足似乎你换啥都意义不大吧 |
32 wswlaz 2024-01-26 13:22:37 +08:00 一个服务端,一个客户端...... 你觉得呢...... |
![]() | 33 agagega 2024-01-26 13:31:21 +08:00 除了部署在服务器上这种需要并发访问的情况 SQLite 不适合,SQLite 其实是个相当强大的数据库,不要因为名字就瞧不起它。如果是在客户端保存一些数据的场景,用 SQLite 的性能几乎一定比自定义各种乱七八糟的格式或者序列化到 JSON/XML 然后一股脑 fwrite 到硬盘更好。 |
![]() | 34 flynaj 2024-01-26 13:47:08 +08:00 SQLite 名字就暗示它小,适合少量数据。只支持基本的 sql,没有复杂功能,普通用户最多接触到的就是 chrome 类 ll 浏览器用来存用户数据,比起 ini 文件.自定义的 dat 文件,性能,操作性更好。 |
35 drymonfidelia OP |
36 drymonfidelia OP @flynaj chrome 只有已经废弃的 indexeddb 用的是 sqlite 吧?用自定义的 dat 文件还需要自己写索引、删除数据逻辑吧 |
37 drymonfidelia OP @drymonfidelia 打错了 已经废弃的 websql https://developer.chrome.com/blog/deprecating-web-sql |
38 drymonfidelia OP @flynaj 打错了 已经废弃的是 websql https://developer.chrome.com/blog/deprecating-web-sql |
![]() | 39 VeteranCat 2024-01-26 14:24:06 +08:00 没有白占的空间,也没有白吃的内存。 |
![]() | 40 whyrookie 2024-01-26 15:33:13 +08:00 @786375312123 客户端带个本地数据库,离线使用不是很常见吗? |
42 cyningxu 2024-01-26 16:14:03 +08:00 是我重未设想过的问题,为啥 X86 芯片这么难造,51 芯片却能造出来? |
43 shunia 2024-01-26 16:52:44 +08:00 哈哈哈哈哈。 为什么飞机那么大,自行车这么小,都是交通工具,自行车跑三天都到不了,飞机三个小时就到了。只能考虑坐飞机了,但是这东西也太贵了。 |
45 nodejsexpress 2024-01-26 19:14:55 +08:00 明白楼主的需求。很多时候是客户需求和环境限制。 sqlite 主要问题是当你文件太大时,程序启动载入太慢了。 客户端,客户频繁打开的话,很难受得了。 以前搞过一个项目,本来还 ok 的,后面也换了 mysql 。但不用打入客户端里面,只是单机离线。 |
46 james122333 2024-01-26 20:36:42 +08:00 via Android @ucando 但毕竞文字可压缩 |
47 james122333 2024-01-26 20:41:47 +08:00 via Android 客户端频繁打开? 那应该是小问题 |
48 wxf666 2024-01-27 00:24:37 +08:00 楼主,放下你的 表结构 和 SQL 出来看看? |
49 geniussoft 2024-01-27 00:28:29 +08:00 via iPhone 虽然但是,SQLite 查询性能还是可以的,除非你需要的是 Oracle |
![]() | 50 iv8d 2024-01-27 09:16:55 +08:00 筷子跟瑞士军刀的区别吧,孩子有功夫想想别的 |
![]() | 51 iv8d 2024-01-27 09:18:15 +08:00 下一条你是不是要问,为什么 Oracle 那么大,MySQL 却能做到那么小? |
52 lvlongxiang199 2024-01-27 11:24:59 +08:00 @James369 有啥相似性吗 ? 有哪些是 MySQL 能做到, 但 sqlite 做不到的 ? |
53 wxf666 2024-01-27 16:00:14 +08:00 @nodejsexpress SQLite 数据库文件就算大到 1TB ,也没事啊?又不是启动就要读完它? |
![]() | 54 flowerains 2024-01-29 08:53:46 +08:00 好奇 wcdb 国内 App 用的多不多 Firebird 我是知道的 |
55 nodejsexpress 2024-03-04 19:46:38 +08:00 @wxf666 作为客户端,用户经常关闭,打开。。。 不是 web |