寻求个反内卷的分布式/集群数据库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答术问题时复制粘贴 AI 生成的内容
craftx
V2EX    程序员

寻求个反内卷的分布式/集群数据库

  •  
  •   craftx 2023-06-13 15:34:18 +08:00 2569 次点击
    这是一个创建于 920 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚刚读了这篇: https://cloud.tencent.com/developer/article/1888474
    结尾一句很精彩:总之,我们应该采用无聊的技术去构建创新的产品,而不是倒过来。
    所以,我来寻求一个“无聊”的数据库。

    我不想去学习和运维一个“创新”的分布式数据库,甚至不想去给数据库分表,这样可以更多将精力放在产品和其它更有价值的技术上。

    我现在使用数据库的方法有两种:
    1. 开发机器上用 docker 跑了一个数据库实例,随系统启动。
    2. 卖盗版书给我还打死不赔偿的马老板家提供的云数据库。
    这两种,我都不需要费心再学习和运维。它们对我,就是一个连接字符串。

    但这两种使用方法并不总是能满足我的需求,原因有下:
    1.一些系统的需求,更多是分析,而非交易。
    2.一些系统的数据量很大。这些数据,可能是用于交易,也可能用于分析。
    3.一些项目,客户要求私有化部署,也就是部署在客户自家的机房里,这些机房可能是不连外网的。

    是的,很多“创新”的分布式数据库软件可以满足上面三项需求。
    但很多“创新”的产品往往很反人类,用户体检很糟。他们需要我:
    1. 学习他们的安装、运维、使用方法,这是一个漫长的过程。
    2. 然后按照学到的,去安装、运维、使用,这会伴随着我渡过整个项目生命周期,尤其在项目开始时和半夜。
    3. 新的东西往往很多坑,但文档往往不会高亮出自己的缺点。我的老板也不喜欢我告诉客户,自己开发的产品有哪些缺陷。

    所以,我需要的是这样子的数据库:
    1. 能够满足分析和交易的需求。我并不介意这两种需求是两种数据库分别满足的。
    2. 学习起来很简单。最好文档能够秒懂。
    3. 集群,运维简单。最好在每台服务器上执行一条命令,就可以拉起整个集群。当需要新增存储空间时,只需要将服务器连接到集群;不用担心集群中的某个节点半夜会挂掉或恢复。我并不介意集群类型是分布式,还是中间件实现的主备 /分片。
    4. 使用简单。最好对于使用者来说,就是一条普通的连接字符串。最多是创建表 /集合时,简单声明下分布式 /集群配置。
    5. 对硬件要求不高,不然我的老板会不高兴。
    6. 当然,还得支持部署到不连外网的机房。

    总之,作为成年人,我需要的是既要又要还要的数据库。
    19 条回复    2023-06-14 09:45:33 +08:00
    encro
        1
    encro  
       2023-06-13 15:42:43 +08:00
    你说的就是 pg
    jr55475f112iz2tu
        2
    jr55475f112iz2tu  
       2023-06-13 16:28:33 +08:00
    还要免费对吧?
    winglight2016
        3
    winglight2016  
       2023-06-13 17:13:50 +08:00
    @encro 我们测过 pg 的性能,相同配置的实例,在某些统计上比 mysql 快很多,但是一般的查询并没有比 mysql 快很多,甚至有些还慢,所以最终也没有用 pg 替换 MySQL 。

    lz 的需求,也是我们目前碰到的,并没有太好的办法。只能建立 Hadoop 数仓,实时导数据进去,然后定期删除 MySQL 的历史数据。
    bleaker
        4
    bleaker  
       2023-06-13 17:17:04 +08:00
    Clickhouse
    encro
        5
    encro  
       2023-06-13 17:48:21 +08:00
    @winglight2016

    当然,原理上也不可能性能差很多啊。。。

    很多 pg 的索引其实都利用不上,我觉得适合是因为分布式和楼主需要数据库。

    普通用户用 mysql 就行,有 OLAP ,物理视图,想要时序数据库,存 json ,又怕麻烦,就可以选择 PG 。

    pg 跑 a 股历史分钟级数据应该没啥问题。

    DuckDB 线性回归预测股价的例子 https://github.com/digoal/blog/blob/master/202209/20220902_01.md

    选 PG 主要是有 https://github.com/digoal/blog
    jones2000
        6
    jones2000  
       2023-06-13 18:31:23 +08:00
    对于开发来说,数据库只是用来存储, 用什么类型的库都可以,只要表结构设计合理就可以。 最终数据还是要读取到内存,计算。 再快的查询也没有直接读内存快。
    机器硬件升级比优化来的快, 投几十 W 升级下硬件设备,第 2 天就可以看到效果。 这比招几个开发优化半年来的快,还不用招人,交社保, 硬件还能算固定资产。
    zachwei
        7
    zachwei  
       2023-06-13 18:37:56 +08:00
    mysql
    12wk34
        8
    12wk34  
       2023-06-13 19:09:44 +08:00
    使用 tiup 部署 tidb,只用在一台机器上执行一条命令( https://docs.pingcap.com/zh/tidb/dev/production-deployment-using-tiup
    jin7
        9
    jin7  
       2023-06-13 19:40:44 +08:00
    lealone
    realrojeralone
        10
    realrojeralone  
       2023-06-13 19:45:16 +08:00
    @jin7 这玩意除了作者本人接的项目用,还有其他公司会用在生产环境吗?量级有多大?
    documentzhangx66
        11
    documentzhangx66  
       2023-06-13 19:57:50 +08:00
    当然是 Mongodb ,它学习成本低,在分布式数据库领域几乎拥有最多的案例、教程与各种技术帖子,而且按教程简单配置后,啥也不用管,用就完事了。最新版本的功能也全面。
    vitovan
        12
    vitovan  
       2023-06-13 20:22:13 +08:00
    @documentzhangx66 #11 MongoDB 的 Aggregation 足以劝退楼主:

    https://www.mongodb.com/docs/manual/tutorial/aggregation-zip-code-data-set/#return-largest-and-smallest-cities-by-state

    ```Javascript
    db.zipcodes.aggregate( [
    { $group:
    {
    _id: { state: "$state", city: "$city" },
    pop: { $sum: "$pop" }
    }
    },
    { $sort: { pop: 1 } },
    { $group:
    {
    _id : "$_id.state",
    biggestCity: { $last: "$_id.city" },
    biggestPop: { $last: "$pop" },
    smallestCity: { $first: "$_id.city" },
    smallestPop: { $first: "$pop" }
    }
    },
    // the following $project is optional, and
    // modifies the output format.
    { $project:
    { _id: 0,
    state: "$_id",
    biggestCity: { name: "$biggestCity", pop: "$biggestPop" },
    smallestCity: { name: "$smallestCity", pop: "$smallestPop" }
    }
    }
    ] )
    ```
    my3157
        13
    my3157  
       2023-06-13 20:29:35 +08:00 via Android
    试试 ScyllaDB
    documentzhangx66
        14
    documentzhangx66  
       2023-06-13 20:44:53 +08:00
    @vitovan

    如果这就劝退,这边建议换个行业呢亲。
    vitovan
        15
    vitovan  
       2023-06-13 21:01:49 +08:00
    @documentzhangx66 #14 我是担心这个不符合楼主的要求:

    > 2. 学习起来很简单。最好文档能够秒懂。

    如果楼主是从 SQL 角度来看的话,这个可能会比较反直觉。

    如果楼主是 Javascript 熟练工的话,这个应该还好。
    craftx
        16
    craftx  
    OP
       2023-06-13 22:40:28 +08:00   1
    @vitovan 我确实是 js 的熟练工。
    mongodb 运维的麻烦、arggregate 的便捷和坑,我都领教过
    litguy
        17
    litguy  
       2023-06-14 08:10:37 +08:00
    试试 tidb 吧
    bthulu
        18
    bthulu  
       2023-06-14 08:57:42 +08:00
    阿里云数据库是可以私有化部署的, 需要跟阿里去谈判, 就是会贵很多.
    craftx
        19
    craftx  
    OP
       2023-06-14 09:45:33 +08:00
    @bthulu 刚刚调研了 oceanbase ,专为大型系统设计,我折腾了一天,都没跑起来
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1294 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:07 PVG 01:07 LAX 09:07 JFK 12:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86