为什么你们要把 sql 当 nosql 用?

2021-04-08 19:00:21 +08:00
 iseki

sql 的好处一点没沾着,坑全要踩一遍,传统 dbms 这么多功能就用了个事务,有人可能还不注意用不对…

8742 次点击
所在节点   NoSQL
64 条回复
fkdog
2021-04-08 21:10:58 +08:00
@xiangyuecn 跟注解没关系。我不知道你的需求是什么才会想到这么膈应人的方法。我提供一个场景不知道符不符合你的需求。

某一个 Service 提供 findByName 方法,findByName 出于某种原因里边有个需求,如果没有查询到某个 Name,那么就创建一条这样的记录,也就是说 findByName 需要调用同 service 下的 create 方法。但是由于通过 this.create 方法,是没有走 spring 的事务增强的,那么很容易导致问题。那么你的解决思路是通过 Spring 的 AopUtils 来获取 this 在 spring 容器中增强过的 bean 。

你的这个想法的确是可以解决你的需求,但是这不是一个好的解决思路。

我更倾向于 findByName 和 create 方法在某一层进行聚合,而不是在 findByName 里调用 create 方法。或者你不想加入聚合层,你可以直接在 Sevice 创建一个新方法 findOrCreat()来聚合这两个 findByName 和 create 方法,然后你在 findOrCreat 上边打上 @Transactional 注释来控制内部嵌套事务的传播性,方便你更细粒度的处理事务提交和回滚。而且 findByName 能更好的专注于方法名所提供的功能,因为其他人去调用你的 findByName 时他们是不清楚你里边还有调用了 create 方法,玩意他们调用了然后创新了一条新纪录可能也不是他们自己的本意。
oneisall8955
2021-04-08 21:18:23 +08:00
@xiangyuecn springcontextutil
xiangyuecn
2021-04-08 22:00:09 +08:00
@fkdog #21 谢谢😁
BeautifulSoap
2021-04-08 22:00:26 +08:00
那么既然 lz 这么懂的话,能不能回答下我这个帖子的需求,该用什么 nosql ? mongodb 是不行的,孱弱的搜索和建索引能力
BeautifulSoap
2021-04-08 22:01:24 +08:00
帖子忘贴了

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

除了使用 sql 预留字段或者 json,请问上面这需求还有什么解决办法?
zjsxwc
2021-04-08 22:42:46 +08:00
除了不用外键、不用存储过程、对公业务不 join 多个表外,其他的特性我都用
mtrec
2021-04-08 22:51:20 +08:00
cp 数据库跟 ap 数据库有什么好比的 哪个合适上哪个 没瓶颈别出错就行 架构都是慢慢演变的
Rocketer
2021-04-09 00:52:47 +08:00
几年前的测试结果,拿 PostgreSQL 当 nosql 用,性能比 mongo 还好,也不知道这几年 mongo 提升了没有
msg7086
2021-04-09 06:53:00 +08:00
因为有人运维啊,因为 ORM 现成的框架啊,因为万一要用到关系的时候不用推翻重来啊,等等。
iseki
2021-04-09 08:18:46 +08:00
然而我说的是那些折腾分表分库的,为什么不一步到位 nosql
LokiSharp
2021-04-09 08:37:49 +08:00
@iseki NoSQL 综合性能不如 SQL
qwerthhusn
2021-04-09 08:59:13 +08:00
坏的医美,暴殄天物;好的医美,锦上添花,笔补造化。。
uselessVisitor
2021-04-09 09:21:20 +08:00
@xiangyuecn 不知道你是怎么使用的,我这边只要加上注解,就算是同一个类中的调用,在各个地方用 Int i = 1/0;都是可以回滚的
NULL2020
2021-04-09 09:27:08 +08:00
@xiangyuecn #6 AopContext.currentProxy()
passerbytiny
2021-04-09 10:36:39 +08:00
看了楼主的主贴、追加、回复,不知道楼主再说啥。

大概有一点可以确定,楼主想用 nosql 替代 sql 。不要有这样的想法,会很惨的。第一,nosql 虽然叫 nosql,但它真得不是 sql 的反义词,而是补充( RDBMS 的反义词是 ODBMS,这玩意有人尝试过,至今没有成功)。第二,事务,还真是具有一票否决权,目前只有 RDBMS 能够在性能期望内完全满足事务的所有原则。

最后再提醒一下,分库分表,这可是实实在在面向对象领域的事,sql 是实现它而不是决定它,你就算换了 ODBMS 或者全部使用 nosql,也是避免不了的。
no1xsyzy
2021-04-09 10:38:38 +08:00
因为 SQL 搞了很久,优化也都做得很足

@BeautifulSoap 我先盲猜一个图数据库和一个 redis (
不过,我觉得这不是数据库的事儿。
hjosama
2021-04-09 11:22:05 +08:00
你好可爱哦,喜欢你
hjosama
2021-04-09 11:26:14 +08:00
看了你的博客,感觉真的好可爱!似乎像你喜欢 miku 那样,我也喜欢上你了呢,好可爱!
hjosama
2021-04-09 11:30:28 +08:00
iseki 我好喜欢你呢... 到底是个怎样的男孩子呢...
hjosama
2021-04-09 11:31:50 +08:00
iseki 酱在哪个城市呢... 想交朋友...

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

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

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

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

© 2021 V2EX