V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Aloento
V2EX  ›  奇思妙想

有没有一种通过 RPC 操作关系型数据库的方式?

  •  1
     
  •   Aloento · 2023-01-18 21:27:38 +08:00 · 2162 次点击
    这是一个创建于 676 天前的主题,其中的信息可能已经有所发展或是发生改变。
    叠甲:本人初学数据库,编程小白,提问纯属奇思妙想

    据我不太多的知识所知,我们传递 SQL 语句给数据库后数据库都是需要先解析后再调用内部函数进行操作

    那有没有一种可能,就是像 NoSQL 或者 REST 一样直接调用暴露出来的 endpoint 来实现以编程而不是写 SQL 的方式操作数据库呢?
    10 条回复    2023-01-22 01:14:37 +08:00
    zagfai
        1
    zagfai  
       2023-01-18 21:46:33 +08:00
    多得很
    luanjia
        2
    luanjia  
       2023-01-18 21:49:28 +08:00
    OData ?不知道是不是符合你的想法
    ch2
        3
    ch2  
       2023-01-18 21:51:31 +08:00
    mongodb 的 aggregate ,就不需要 sql ,直接上关系运算
    zhy0216
        4
    zhy0216  
       2023-01-18 22:35:19 +08:00
    https://postgrest.org/en/stable/
    虽然不是 rpc 但意思差不多了
    est
        5
    est  
       2023-01-18 23:10:48 +08:00
    > 那有没有一种可能,就是像 NoSQL 或者 REST 一样直接调用暴露出来的 endpoint 来实现以编程而不是写 SQL 的方式操作数据库呢?


    首先想到的是 mysql 的 handlersocket ,很早就支持了

    https://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-intro.html

    The InnoDB memcached plugin implements memcached as a MySQL plugin daemon that accesses the InnoDB storage engine directly, bypassing the MySQL SQL layer.

    其次 LZ 这想法其实回归到远点。。。老人们可能记得 B/S 架构和 C/S 架构。。。

    C/S 架构核心就是把物理数据按照账号权限切分成多个 view ,然后 view 通过一些叫做 trigger 的 hook 进行前置、后置处理吐给客户端。客户端直接通过分配的账号登录 db ,然后进行对部分数据的增删改查。

    rdbms 就是一个 serverless 的低代码平台。你只关心把一些 lambda 在一个界面提交给系统,不用关心他在哪里执行;
    sql 语言就是低代码语言;
    JOIN 就是 graphql ;
    lower
        6
    lower  
       2023-01-18 23:16:47 +08:00
    用过 es 的那种 json 方式的查询参数写法,太难用了;
    不如 sql 写起来直观灵活,假如关系型数据库有这种,我反正是不会用……
    Aloento
        7
    Aloento  
    OP
       2023-01-18 23:42:01 +08:00
    @zhy0216 这个好耶,我正好也用 PG

    @est handlersocket 确实是我想要的
    Aloento
        8
    Aloento  
    OP
       2023-01-19 00:17:19 +08:00
    netabare
        9
    netabare  
       2023-01-22 00:04:58 +08:00   ❤️ 1
    我也在想这种「一捅到底」的 serverless 的设计,不过感觉最大的问题是,怎么保证数据类型的一致性和准确性呢。

    只在客户端前端进行数据检验和匹配吗,对于很多需要 auth 和保持 session 的场合来说这种思路应该无法满足安全性的要求。
    h0099
        10
    h0099  
       2023-01-22 01:14:37 +08:00   ❤️ 1
    #9 @netabare
    > 保证数据类型的一致性和准确性

    楼上#5 早已道明
    > 多个 view ,然后 view 通过一些叫做 trigger 的 hook 进行前置、后置处理吐给客户端

    > 客户端前端进行数据检验和匹配

    建议立即开始写阁下最痛恨的几百上千行的 PL/SQL T-SQL 存储结构

    > rdbms 就是一个 serverless 的低代码平台。你只关心把一些 lambda 在一个界面提交给系统,不用关心他在哪里执行;
    > sql 语言就是低代码语言;
    > JOIN 就是 graphql

    这下现代中台娱乐圈壬上壬们又梦回他们最痛恨的 80/90s COBOL 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:25 · PVG 18:25 · LAX 02:25 · JFK 05:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.