想请问一下关系型数据库的设计 简化 api

2016-12-17 10:24:52 +08:00
 xudaolong

想请问一下关系型数据库的设计 简化 api

例如这种把构成 sql 语句都放在数据库中,后台只负责提供增删改查的 4 个 api,由前台传入特定的 apiid 就可以达到各种对象的增删改查的数据库设计的方案...大概怎么查到之类的设计方案

2461 次点击
所在节点    程序员
15 条回复
jjx
2016-12-17 10:29:07 +08:00
这种 api 是给人用的吗
xudaolong
2016-12-17 10:30:50 +08:00
@jjx 只要数据库配好 指定了 apiid 然后前台负责给特定的接口例如 /select 带上指定的 apiid 参数 就能达成这个对象的查询效果了...
ihuotui
2016-12-17 10:47:00 +08:00
你直接让前端传送 sql 就好了
RoshanWu
2016-12-17 10:49:27 +08:00
前端动 sql 恐怕很少吧。还不如用 Graphql 加一层。
annielong
2016-12-17 10:49:51 +08:00
前端直接传 id 和查询类型不就行了,其他后台来生成 sql ,一般都是这样做的吧
wmhx
2016-12-17 10:50:17 +08:00
为了设计而设计, 设计这种 sql 的 sql 有意思么?
就设计 2 个字段,id 和 sql,传 id 和参数执行 sql 不就行了?
xudaolong
2016-12-17 10:55:08 +08:00
@wmhx 这种设计目的是 之后程序不用改动 只需要在数据库进行添加并附加一个 apiid 就会有新的对象的 增删改查的...
likai
2016-12-17 10:59:15 +08:00
设计成这样.还不如直接让前端传 SQL
dayjgut
2016-12-17 11:13:14 +08:00
我的天...

1. 你每次数据库操作都需要额外的一次 DB 查询
2. 由于问题 1 ,所以做缓存是必然的了,那为什么不直接在应用层面去设计,很多 ORM 框架都可以提供 sql 和 id 的映射关系并在运行时决定执行哪个 sql 的
3. 你确定服务端的业务逻辑仅仅用 sql 就可以实现吗,明显不行啊....

另外,你的 sql 参数怎么传入?多个 sql 执行顺序如何协调?
Miy4mori
2016-12-17 12:20:06 +08:00
怕不是遇到复杂业务连事物都没有了, mongodb 适合你……, rdb 不适合你
fy
2016-12-17 16:37:16 +08:00
lz 还是年轻,直接解析参数构造 sql 查询就可以了

https://gist.github.com/fy0/7364fb62d7c147205d4453d1b3b1b3f9
SoloCompany
2016-12-18 12:27:36 +08:00
你这个定义应该放内存里而不是数据表里
如果真的要做到可配置,那么放个某个配置文件里面就可以了
至于喷性能的是什么心态?实现上难道不应该 100%放内存,难道每次 api 解释还查数据库?
xudaolong
2016-12-18 15:21:28 +08:00
@fy @SoloCompany 其实放配置文件到数据库 主要的目的是 不修改或添加代码的情况下 进行新对象接口 api 的提供,给运维人员带来方便.当然地,第一次查询或者服务器启动的时候就可以对这个 api 视图进行缓存...
xudaolong
2016-12-18 15:25:04 +08:00
@dayjgut 缓存是必要的.sql 的参数是在细单概念上面的,相当于也有一个指定的 apiiddtl,至于 sql 的执行顺序是可以控制,当然地,如果很复杂的,会额外写 api 接口...
dayjgut
2016-12-18 21:18:44 +08:00
@xudaolong 事物怎么控制?权限怎么控制?

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

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

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

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

© 2021 V2EX