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

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

  •  
  •   craftx · 2023-06-13 15:34:18 +08:00 · 2087 次点击
    这是一个创建于 528 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚刚读了这篇: 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
    czfy
        2
    czfy  
       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   ·   实用小工具   ·   5257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:53 · PVG 16:53 · LAX 00:53 · JFK 03:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.