[技术]-没有 ORM 的架构

55 天前
 PendingOni
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 这样的第三方框架

3254 次点击
所在节点    程序员
27 条回复
ZGame
55 天前
SqlSugar 挺好用的,存储过程更像调用别人写的方法,适合交付和程序对接使用吧。
Braisdom
55 天前
现在已经很少有人用 ORM 了,

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

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

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

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

我没用过。。。
Braisdom
55 天前
@nian8 实际使用都不需要关心无数据,只需要知道领域知识就可以了,输入关键字,直接出数据报告,
leegradyllljjjj
55 天前
@Braisdom 这不就是个报表?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX