做爱动态图

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

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

  •  
  •   lynan · 31 天前 · 5868 次点击
    这是一个创建于 31 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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