[技术]-没有 ORM 的架构 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
PendingOni
V2EX    程序员

[技术]-没有 ORM 的架构

  •  
  •   PendingOni
    Komi-Thaw 2024 年 3 月 15 日 4105 次点击
    这是一个创建于 698 天前的主题,其中的信息可能已经有所发展或是发生改变。
    USE [lysk2] GO /****** Object: StoredProcedure [dbo].[P_EvacuateNodes] Script Date: 2023/11/30 8:25:41 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[P_EvacuateNodes] @node int = 999 as begin truncate table CalStartTab; EXEC P_CalculateStartProc @node; truncate table CalEndTab; EXEC P_CalculateEndProc @node; truncate table EvacEvenNodesTab; insert into EvacEvenNodesTab SELECT tp.* FROM ( SELECT TOP 100 PERCENT ROW_NUMBER() OVER ( partition BY ddid ORDER BY wtime ) AS rowNum, sid, tid, ygid, wtime, ddid FROM WFRecord WHERE id IN ( SELECT id FROM WFRecord wf INNER JOIN CalStartTab s ON wf.ddid = s.ddid INNER JOIN CalEndTab e ON wf.ddid = e.ddid WHERE ( sid = @node OR tid = @node ) AND wtime >= s.minTime AND wtime <= e.maxTime GROUP BY wf.ddid, wf.id ) ORDER BY wtime ) tp WHERE tp.rowNum % 2 = 0 truncate table EvacOddNodesTab; insert into EvacOddNodesTab SELECT tp.* FROM ( SELECT TOP 100 PERCENT ROW_NUMBER() OVER ( partition BY ddid ORDER BY wtime ) AS rowNum, sid, tid, ygid, wtime, ddid FROM WFRecord WHERE id IN ( SELECT id FROM WFRecord wf INNER JOIN CalStartTab s ON wf.ddid = s.ddid INNER JOIN CalEndTab e ON wf.ddid = e.ddid WHERE ( sid = @node OR tid = @node ) AND wtime >= s.minTime AND wtime <= e.maxTime GROUP BY wf.ddid, wf.id ) ORDER BY wtime ) tp WHERE tp.rowNum % 2 = 1 end 

    突然翻到之前自己写的存储过程 现在看看都是头皮发麻 公司框架用的还是 .Net Framework 4.5

    直接用 CYQ.Data 和数据库交互 sql 中 order by 还失效 必须先查询加载到内存后再排序

    之前一直用的是 EF 或者 EF Core 也用过 SqlSugar 这样的第三方框架

    image.png

    27 条回复    2024-03-16 15:38:45 +08:00
    ZGame
        1
    ZGame  
       2024 年 3 月 15 日
    SqlSugar 挺好用的,存储过程更像调用别人写的方法,适合交付和程序对接使用吧。
    Braisdom
        2
    Braisdom  
       2024 年 3 月 15 日   1
    现在已经很少有人用 ORM 了,

    1 )我总曾经的开源项目: https://github.com/braisdom/ObjectiveSql 已经好久没更新了,

    2 )我现在的商业化项目: https://www.agiquery.com 已经不用写 SQL 了哈哈
    ZGame
        3
    ZGame  
       2024 年 3 月 15 日
    @Braisdom 老哥你的框架有点像 c# 的 linq 或者 java 的 jooq ,在往上封装就是 orm 了
    Braisdom
        4
    Braisdom  
       2024 年 3 月 15 日   1
    @ZGame 是的,但后来发现这样做下去还是要编程,所以 做了 Agile Query ,就不要编程了,哈哈
    matrix1010
        5
    matrix1010  
       2024 年 3 月 15 日 via iPhone   2
    @Braisdom 你的项目不更新就代表很少有人用 ORM?
    heyline
        6
    heyline  
       2024 年 3 月 15 日
    @Braisdom 你这个和 cube.js 啥的有啥区别
    Removable
        7
    Removable  
       2024 年 3 月 15 日
    @matrix1010 #5 要创业嘛,不说点夸张的话,怎么能吸引到使用者呢 (狗头
    Braisdom
        8
    Braisdom  
       2024 年 3 月 15 日   1
    @matrix1010 当然不是了,我自己用了很多年的 ORM ,ORM 只能解决很少的问题,可能适用少部分项目,我做的大都数项目都不用 SQL 型数据库了,所以 ORM 也就更用不上了。

    目前,系统数据库我都不会先 SQL 型数据库,只有在数据分析行业才会有 SQL 型数据库,但数据分析型项目,ORM 解决的问题太少了,大都数都是手写 SQL 。

    所以,我才会做 Agile Query 项目,它自身的数据存储不是 SQL 型数据库,ORM 也就没用了。
    Braisdom
        9
    Braisdom  
       2024 年 3 月 15 日   1
    @heyline 和 cube.js 最核心的区别是:Agile Query 做数据分析不需要关心 JOIN ,还有很多领域分析函数,像:同环比,占比,分类等。
    perbugwei
        10
    perbugwei  
       2024 年 3 月 15 日
    @Braisdom 很少用 ORM 了?不是吧,这是怎么总结出来的结论呀。有啥数据支撑么
    Braisdom
        11
    Braisdom  
       2024 年 3 月 15 日   1
    @perbugwei 不是数据支撑,当你项目做过了以后就会感觉,系统数据用 SQL 型数据库存储,会使代码很复杂,现在很多非 SQL 型数据库,对编程很友好的,建议试试。
    ericguo
        12
    ericguo  
       2024 年 3 月 15 日   1
    现在软广的水平已经那么高了么?
    perbugwei
        13
    perbugwei  
       2024 年 3 月 15 日
    @Braisdom 你这个非 sql 型数据库是指哪些
    Braisdom
        14
    Braisdom  
       2024 年 3 月 15 日   1
    @perbugwei 我现在用的是 arangodb , 主要是支持 图,全文搜索,Embedding ,还有简单的关系统计,它的查询语言与编程语言比较接近,我的 Agile Query 主要用到的也就这些,他还有很多其它的能力,
    cndenis
        15
    cndenis  
       2024 年 3 月 15 日   1
    这种同时用上开窗, 聚合, JOIN, 子查询的的 SQL, 原生 SQL 是王道, 用 ORM 才是让人头疼的事
    matrix1010
        16
    matrix1010  
       2024 年 3 月 15 日
    @Removable 这已经算造谣了,就算是 APIJSON 宣传也是夸自己多万能而不是说 xxx 已经没人用了。错误的宣传只会起到反作用
    Braisdom
        17
    Braisdom  
       2024 年 3 月 15 日   1
    @cndenis 哪也不一定的,你可以看看这样的 SQL 是不是复杂,照样不用人肉写的:
    nian8
        18
    nian8  
       2024 年 3 月 15 日
    感觉像是 excel + 搜索 + 自定义规则/函数
    数据来源及元数据的信息需要很熟悉,才能用起来吧

    我没用过。。。
    Braisdom
        19
    Braisdom  
       2024 年 3 月 15 日
    @nian8 实际使用都不需要关心无数据,只需要知道领域知识就可以了,输入关键字,直接出数据报告,
    leegradyllljjjj
        20
    leegradyllljjjj  
       2024 年 3 月 15 日
    @Braisdom 这不就是个报表?
    Braisdom
        21
    Braisdom  
       2024 年 3 月 15 日
    @leegradyllljjjj 差不多是这个样子,但 Agile Query 做一个报表只要几秒钟,而且还不需要二次开发,哈哈
    roundgis
        22
    roundgis  
       2024 年 3 月 15 日 via Android
    @Braisdom arangodb. 感很少人用。定?
    Braisdom
        23
    Braisdom  
       2024 年 3 月 15 日
    @roundgis 相当稳定,国外用的人很多。
    Braisdom
        24
    Braisdom  
       2024 年 3 月 15 日
    @roundgis 至少比 MySQL 的 Bug 少太多了
    roundgis
        25
    roundgis  
       2024 年 3 月 15 日 via Android
    @Braisdom 你用社版是企版 三年前曾 版本差有些大 後者功能多很多
    Braisdom
        26
    Braisdom  
       2024 年 3 月 15 日
    @roundgis 社版,用了好久了,基本没啥问题
    roundgis
        27
    roundgis  
       2024 年 3 月 16 日 via Android
    @Braisdom 最近有目打算用一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2640 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:14 PVG 12:14 LAX 20:14 JFK 23:14
    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