V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lynan
V2EX  ›  程序员

SQLite 可以用作线上数据库吗?

  •  
  •   lynan · 2021-01-26 08:48:00 +08:00 · 7734 次点击
    这是一个创建于 737 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个小项目( 1000 个用户左右),直接使用 SQLite 合不合适呢?

    第 1 条附言  ·  2021-01-28 08:56:09 +08:00
    换 MySQL 了~~
    48 条回复    2021-01-27 18:56:40 +08:00
    xuanbg
        1
    xuanbg  
       2021-01-26 08:50:02 +08:00
    合适
    way2explore2
        2
    way2explore2  
       2021-01-26 08:50:08 +08:00
    if 1000 users are all online at the same time, definetely not.
    qping
        3
    qping  
       2021-01-26 08:51:44 +08:00
    sqlite 没法支持并发写吧,只是并发读应该可以
    stardustree
        4
    stardustree  
       2021-01-26 08:52:03 +08:00
    先试试,崩了再说呗 (●'◡'●)
    lynan
        5
    lynan  
    OP
       2021-01-26 08:52:24 +08:00
    功能是用户 a 提交表单,用户 b 提交反馈。同时在线人数应该不多,用户提交表单这个行为是低频的。
    lynan
        6
    lynan  
    OP
       2021-01-26 08:53:01 +08:00
    用户 b 对用户 a 提交的表单进行反馈。
    gstqc
        7
    gstqc  
       2021-01-26 08:53:59 +08:00 via Android
    合适,没问题
    kaka6
        8
    kaka6  
       2021-01-26 08:56:58 +08:00
    正常没问题,并发量大时就会有问题,必竟是文件数据库,有 IO 瓶颈
    havemail
        9
    havemail  
       2021-01-26 09:07:01 +08:00
    肯定是不合适,但是如果你加个 Redis 缓存 还是可以的一试,毕竟功能简单而且 QPS 不会太高,1000 用户只是表单提交没啥并发,上线前最好是做一次压测,看看瓶颈在哪。
    love
        10
    love  
       2021-01-26 09:07:29 +08:00
    1000 用户同时在线都没问题
    jason19659
        11
    jason19659  
       2021-01-26 09:07:56 +08:00
    没啥问题,用文件写都行
    unclemcz
        12
    unclemcz  
       2021-01-26 09:08:47 +08:00
    性能应该问题不大的,数据管理是个问题,sqlite 应该无法远程运维。
    我自己的一个项目放云上,用 sqlite 运行了差不多一年不到的样子,后来实在是太麻烦了,每次数据运维都要登录服务器,现在换 mysql 了。
    jorneyr
        13
    jorneyr  
       2021-01-26 09:10:47 +08:00
    @qping 这才是最重要的。
    Soar360
        14
    Soar360  
       2021-01-26 09:13:18 +08:00   ❤️ 1
    hummm... SQLite 是库级锁哦。
    qwerthhusn
        15
    qwerthhusn  
       2021-01-26 09:13:29 +08:00
    装个 mysql 或者 postgres 也是分分钟的事。资料也多,解决问题方便。
    以后用起来使用成本肯定比 SQLLite 要低,而且万一以后扛不住了,也很好扩展
    IDAEngine
        16
    IDAEngine  
       2021-01-26 09:20:46 +08:00
    还是别用 SQLLite 吧,管理维护太麻烦了,还不如装个 sqlserver 免费版
    lqw3030
        17
    lqw3030  
       2021-01-26 09:25:29 +08:00
    加一个降级方案,保证扛不住的时候数据不丢
    yimity
        18
    yimity  
       2021-01-26 09:30:39 +08:00
    sqlite 和 MySQL 在使用上没什么特别大的差别,但是 MySQL 会带来特别多的好处。
    所以不清楚线上站点,总是想用 sqlite 是为了什么?
    securityCoding
        19
    securityCoding  
       2021-01-26 09:42:25 +08:00
    图什么?
    kiracyan
        20
    kiracyan  
       2021-01-26 09:42:55 +08:00
    sqlite 一般都做单机数据库的吧
    misaka19000
        21
    misaka19000  
       2021-01-26 09:52:51 +08:00
    这个和用户数量没关系吧,主要是看 QPS,如果 1000 个用户只有 100 个子线,而同时只有 10 个用户在进行数据操作,那么 SQLite 显然是没问题的
    yinzhili
        22
    yinzhili  
       2021-01-26 09:59:56 +08:00
    以后如果确定不需要扩展的话就可以
    xumng123
        23
    xumng123  
       2021-01-26 11:37:23 +08:00 via iPhone
    不方便,从 sqlite 迁移到 mysql 巨麻烦,导出的脚本各种不兼容
    lawler
        24
    lawler  
       2021-01-26 11:40:02 +08:00
    用 H2 吧,至少有在线管理数据库。
    roundgis
        25
    roundgis  
       2021-01-26 11:47:13 +08:00 via Android
    用了六七年了,一點問題都沒有
    real3cho
        26
    real3cho  
       2021-01-26 11:52:03 +08:00
    SQL Server Express 它不香吗?
    opengps
        27
    opengps  
       2021-01-26 12:04:45 +08:00   ❤️ 1
    这个问题,跟我当年了解云是虚拟机时候一样的感觉。
    一直觉得虚拟机只是本地玩玩,然而现在的云却几乎全是虚拟机。
    决定是否可以用于线上的主要因素并非大小体积等,而是看他是否能解决一些线上的问题,任何东西放在有用的地方就是好东西
    bagheer
        28
    bagheer  
       2021-01-26 12:32:27 +08:00   ❤️ 3
    github 上有一个 rqlite 项目,用 sqlite 做存储, 做了分布式.(默认全内存)
    Nich0la5
        29
    Nich0la5  
       2021-01-26 14:36:55 +08:00
    尽量不要 sqlite 抗不住高并发
    libook
        30
    libook  
       2021-01-26 14:51:18 +08:00
    从项目本身的靠谱性上来说,SQL 可以拿来做企业级应用的。

    但数据库一大堆,各有特色,选哪个要结合你的实际需求来看。

    最直观的方式就是模拟用户使用情况,然后做压测,比如你有 1000 个用户,就搞 2000 个模拟用户试试,看看能不能扛得住。

    要是负载巨低,数据量超小,你搞个 yaml 自己写程序读写也成,读操作就直接在内存里操作,写操作就更新文件。

    或者你还是不知道用啥合适,就用主流方案,比如 MySQL 、SQLServer 。
    MrTLJH
        31
    MrTLJH  
       2021-01-26 17:29:01 +08:00 via Android
    目前我就在用,用户每天 1000 个左右,没并发就没问题
    areless
        32
    areless  
       2021-01-26 17:39:18 +08:00 via Android
    这个可以跑在内存中,还能跑在显存中~用 gpu 加速 sql 只要执行的快 库锁级不是问题~直接锁电脑都没问题呀
    c00WKmdje2wZLrSI
        33
    c00WKmdje2wZLrSI  
       2021-01-26 17:42:26 +08:00
    @unclemcz navicat 有个 http 隧道功能,可以远程 sqlite
    lithbitren
        34
    lithbitren  
       2021-01-26 17:43:20 +08:00
    跑在内存里,sqlite 作为内存的持久化,怎么并发问题都不大
    kosmgco
        35
    kosmgco  
       2021-01-26 17:58:23 +08:00   ❤️ 1
    vanityfairn
        36
    vanityfairn  
       2021-01-26 18:59:17 +08:00
    h2,有个管理页面,哈哈哈哈。我最近也是在搞内存数据库做个人小项目。用 mysql,对个人而言嫌贵了。
    ibcker
        37
    ibcker  
       2021-01-26 20:31:09 +08:00
    最好不要,不要问我是怎么直到的。。。。逃。。。
    yufeng0681
        38
    yufeng0681  
       2021-01-26 23:02:33 +08:00
    docker 部署一个 mysql,也不繁琐啊
    fox0001
        39
    fox0001  
       2021-01-26 23:39:29 +08:00 via Android
    老哥,对未来的自己好点,还是别…
    coymail
        40
    coymail  
       2021-01-27 01:00:26 +08:00 via iPhone
    可以,但没必要
    xy90321
        41
    xy90321  
       2021-01-27 01:34:51 +08:00
    把 sqlite 的 db 文件配置到 RAM Disk 里,然后该怎么玩就怎么玩...
    xy90321
        42
    xy90321  
       2021-01-27 01:47:55 +08:00
    但是有一个建议,不要把业务直接和 sqlite 去耦合
    想办法抽象出一个 DAO 层来,然后在 DAO 里去适配具体的 DBMS
    这样在绝大部分场景下,即使被迫更换 DBMS 也都是一件可控 /可预期的事情
    nuk
        43
    nuk  
       2021-01-27 02:19:31 +08:00
    可以,除非数据太多,超过 1G 就不太合适了。
    CallMeReznov
        44
    CallMeReznov  
       2021-01-27 08:41:43 +08:00
    1000 人属于非常极限的状态了。
    lynan
        45
    lynan  
    OP
       2021-01-27 08:48:41 +08:00
    非常谢谢上面的热心回复,昨晚切换到 MySQL 了,用的云数据库,感觉多了一层连接,比原来使用 SQLite 慢得多(+💰可以解决的问题)。
    确实,在需要扩展功能的时候,SQLite 不方便维护。
    ybzai90
        46
    ybzai90  
       2021-01-27 09:23:00 +08:00
    当然可以,宝塔不就是在用嘛
    xpresslink
        47
    xpresslink  
       2021-01-27 11:42:19 +08:00
    一个小项目( 1000 个用户左右),并发用户如果 10 个毫无问题和但是 200 个差别就比较大了。
    建议不要用,还是用 Mysql 或 Postgresql,不然项目增改需求,历史数据又比较多的时候就会很痛苦。
    UserDMM
        48
    UserDMM  
       2021-01-27 18:56:40 +08:00
    sqlite 这东西还是不适合那么人同时搞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   3542 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 09:11 · PVG 17:11 · LAX 01:11 · JFK 04:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.