惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
GbyAI
GbyAI
WordPress大学
WordPress大学
小众软件
小众软件
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
A
About on SuperTechFans
月光博客
月光博客
F
Fortinet All Blogs
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
Jina AI
Jina AI
博客园 - 聂微东
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
Last Week in AI
Last Week in AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog
aimingoo的专栏
aimingoo的专栏
P
Privacy International News Feed
Martin Fowler
Martin Fowler
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
NISL@THU
NISL@THU
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 叶小钗
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
S
Security @ Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
IT之家
IT之家
B
Blog RSS Feed

NoSQL

“nosql 数据库”称呼为什么很流行? - V2EX 写了一篇文章介绍几种 NoSQL 的数据库 - V2EX 有类似 squirrel sql 这样的可视化工具吗 - V2EX 关于索引和查询的几个问题,网上没找到答案 - V2EX Hbase 初学疑问? - V2EX 有人了解 orientdb 吗? - V2EX NoSQL 选择问题 - V2EX 有哪些分布式数据库,实现最终一致性的 - V2EX 关于实现类似知乎草稿箱的问题 - V2EX 关系型数据库和非关系型数据库区别 - V2EX Cassandra metric 导出到 opentsdb 脚本 - V2EX [嘲讽向]MongoDB is web scale - V2EX mongodb 如何实现按照中文拼音的排序 - V2EX 寻求 NoSQL 的最佳实践 - V2EX NoSQL 性能测试 - V2EX 关于 leveldb,现在有国内或者国外的大神把它封装成服务的形式么 - V2EX 大家怎么看 NoSQL 的 ORM - V2EX 感觉nosql其实就是包装lucene这些东西而已。 - V2EX 机器意外掉电后,leveldb数据几乎全部丢失,求如何修复 - V2EX Aerospike - V2EX 有没有完全用 Redis 这样的 Key-Value 数据库来支撑的论坛程序? - V2EX mysql转nosql的逻辑问题 - V2EX Oracle 发布 NoSQL 数据库 - V2EX Google的LevelDB到底是个怎么样的东西? - V2EX 踏上 NoSQL 之路 - V2EX 推荐个小组 - V2EX 有哪位对MongoDB有所了解?能否分享一下使用感受? - V2EX 一些值得关注的新型数据库 - V2EX NoSQL 区 - V2EX
为什么你们要把 sql 当 nosql 用? - V2EX
iseki · 2021-04-08 · via NoSQL

这是一个创建于 1893 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

第 1 条附言  ·  2021 年 4 月 9 日

我的标题不严谨,大家误会了,我是想说那些折腾分表分库的…至于 rdb 本身的类似 nosql 的特性,如 json,我也很喜欢用

第 2 条附言  ·  2021 年 4 月 9 日

突然发现被移到 nosql 节点了…
一开始的帖子正文的确很多话没有说清楚。
主要吐槽质疑的是:处于单表单库性能原因,同时不好利用数据库本身的分区机制规避性能问题,因此将本来属于一个集合的数据按哈希或是主键区域分布到多个表多个库的行为。
问题:破坏了关系型数据库的设计模式,导致数据库本身的检查、关联查询等功能全部报废…可以说除了一个事物,什么好处都没用到;至于运维,可能是我经验有限,我实在不认为这个规模的企业不能运维好一组 nosql

起初的帖子写的不够完整清晰的确失误

Maboroshii

1

Maboroshii      2021 年 4 月 8 日   ❤️ 1

那楼主能分享下在项目中用了关系数据库的哪些好处呢

iseki

3

iseki      2021 年 4 月 8 日 via Android

@Maboroshii 既然用不上 /用不了,那干脆就别用啊,非抱着 dbms,啥特性也不敢用,最后性能还是不够了得分库分表……折腾了有点

wangyanrui

4

wangyanrui      2021 年 4 月 8 日 via iPhone   ❤️ 1

因为相对来说,这玩意大家掌握的更好一丢丢

MIUIOS

5

MIUIOS      2021 年 4 月 8 日   ❤️ 1

不结合业务场景说这些太耍流氓了

xiangyuecn

6

xiangyuecn      2021 年 4 月 8 日

占楼问一下,java,spring 的 @Component 组件实现类的成员函数里面,怎么拿到当前调用本方法的 spring 代理对象? this 肯定不能用的🐶

@Transactional 注解对小白来讲,说好听点就是真省事,说难听点就是反人类

目前我为了保证需要事务环境的方法一定可以开启事务,函数里面强制检查了一遍是否是在事务环境里面;当不需要事务的方法里面调用同一个类里面另一个会新开事务的方法,不需要事务的这个方法我就加一个 self 参数(当前类的接口类型,就是谁调的这个方法就把谁传进来),通过 self 来调用新开事务的方法,多加这个参数仅仅是为了获取代理对象,太难受了,人家的文档又看不懂😂

应该会有一个什么 SpingXXXUtils.currentBean() 之类的东西可以拿到当前这个类接口的代理对象吧,可惜我太菜🐶

求指点,指指点点也行

xiangyuecn

11

xiangyuecn      2021 年 4 月 8 日

@fkdog #10 跟传播不传播好像没有关系,代理对象上调用方法,和 this 调用方法,区别可不是一点。

当你发现 @Transactional 注解的新事务没有开启,应该回滚的被提交,应该提交的被回滚,那就会很奇怪。

最终还是注解的锅,脱离了代理对象,注解不一定能被 spring 处理;如果手动控制事务,想开启开启,想提交提交,想回滚回滚,只要没有提交就是回滚,这些问题都可以避免。用注解来实现事务管理真不是一个好的想法,只能说是省事

可惜手动控制事务,代码繁琐,浪费生命

roccaplover

12

roccaplover      2021 年 4 月 8 日   ❤️ 1

因为非 RDBMS 公司没人维护基础架构,所以。。。

Jooooooooo

13

Jooooooooo      2021 年 4 月 8 日

mysql 运维成熟, 稳定性高.

ychost

14

ychost      2021 年 4 月 8 日   ❤️ 1

@xiangyuecn AspectJ 的的 Gglib 模式 this 和 代理对象就一样了,在 EnableAspectJAutoProxy. proxyTargetClass 开启

ychost

16

ychost      2021 年 4 月 8 日

用其它数据库出了问题都找不到答案,用 RDBMS 资料这块至少很多,而且也提供 JSON 的支持

xuanbg

17

xuanbg      2021 年 4 月 8 日

@iseki 我也很好奇那些怕性能问题不用 join 的,为啥不干脆用 nosql 算了。。。关系型数据库就是要联表的呀,不联表查询哪来的关系?不存在关系用的哪门子 sql ?

geekboy

18

geekboy      2021 年 4 月 8 日 via Android

@xuanbg 不是不用 join,是不要 join 太多表,join 大表要建好索引,性能问题当然要引起重视。

ReferenceE

20

ReferenceE      2021 年 4 月 8 日 via Android

Transaction 不就一个要么不执行,要么全部执行么

fkdog

21

fkdog      2021 年 4 月 8 日   ❤️ 4

@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 方法,玩意他们调用了然后创新了一条新纪录可能也不是他们自己的本意。

BeautifulSoap

24

BeautifulSoap      2021 年 4 月 8 日

那么既然 lz 这么懂的话,能不能回答下我这个帖子的需求,该用什么 nosql ? mongodb 是不行的,孱弱的搜索和建索引能力

zjsxwc

26

zjsxwc      2021 年 4 月 8 日 via Android

除了不用外键、不用存储过程、对公业务不 join 多个表外,其他的特性我都用

mtrec

27

mtrec      2021 年 4 月 8 日 via Android   ❤️ 1

cp 数据库跟 ap 数据库有什么好比的 哪个合适上哪个 没瓶颈别出错就行 架构都是慢慢演变的

Rocketer

28

Rocketer      2021 年 4 月 9 日 via iPhone

几年前的测试结果,拿 PostgreSQL 当 nosql 用,性能比 mongo 还好,也不知道这几年 mongo 提升了没有

msg7086

29

msg7086      2021 年 4 月 9 日 via Android

因为有人运维啊,因为 ORM 现成的框架啊,因为万一要用到关系的时候不用推翻重来啊,等等。

iseki

30

iseki      2021 年 4 月 9 日 via Android

然而我说的是那些折腾分表分库的,为什么不一步到位 nosql

qwerthhusn

32

qwerthhusn      2021 年 4 月 9 日

坏的医美,暴殄天物;好的医美,锦上添花,笔补造化。。

passerbytiny

35

passerbytiny      2021 年 4 月 9 日 via Android   ❤️ 2

看了楼主的主贴、追加、回复,不知道楼主再说啥。

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

最后再提醒一下,分库分表,这可是实实在在面向对象领域的事,sql 是实现它而不是决定它,你就算换了 ODBMS 或者全部使用 nosql,也是避免不了的。

hjosama

37

hjosama      2021 年 4 月 9 日

你好可爱哦,喜欢你

hjosama

38

hjosama      2021 年 4 月 9 日

看了你的博客,感觉真的好可爱!似乎像你喜欢 miku 那样,我也喜欢上你了呢,好可爱!

hjosama

39

hjosama      2021 年 4 月 9 日

iseki 我好喜欢你呢... 到底是个怎样的男孩子呢...

hjosama

40

hjosama      2021 年 4 月 9 日

iseki 酱在哪个城市呢... 想交朋友...

hjosama

41

hjosama      2021 年 4 月 9 日

原来可爱到如此程度的 iseki 酱是个买房了的中年大叔呢 爱情还没开始就凋零了...

hjosama

43

hjosama      2021 年 4 月 9 日

我已经爱上 iseki 酱了 无法自拔了 等回复唔

hjosama

44

hjosama      2021 年 4 月 9 日

感觉喜欢热度稍微下降了一点点,因为十几分钟还没回复,大概是因为被 iseki 酱的可爱一时上头了呢

Macolor21

45

Macolor21      2021 年 4 月 9 日

@iseki
说实话我技术不够好,看不懂你的吐槽点,对我来说 NoSQL 一般键值对存储和文档存储?
然后你说的分库分表,我司有个需求:一个 SaaS 系统,每一个客户拥有一套完整的数据库(用户,数据,分类,客户端 balabala 一堆表),每个客户存储的数据量不一(根据付费等级而定)。因为是 SAAS,所以应用程序是共用同一套,只是底层存储不一样。这种需求的话,如果不以客户分库(目前是 SELECT xx FROM client[xx].user ) 的话,我想不出来有什么更好的解决方案。(可能给行加个客户端列?那这样底层的数据聚集是应该以客户聚集,还是表本身呢?如果以表本身,那查一个客户德批量查询,估计的 N 多次寻道...)

JasonLaw

48

JasonLaw      2021 年 4 月 9 日 via iPhone

而且回复里面也掺杂了好多无关的东西,就不能自己新建个主题吗?

namelosw

49

namelosw      2021 年 4 月 9 日

因为 Postgres 一把梭省事。

实在遭不住再换 Cassandra 之类暴力的,运维操蛋。

tairan2006

50

tairan2006      2021 年 4 月 9 日

现在不怎么谈 NoSQL 了吧,像一般的 MPP 数据库甚至 ElasticSearch 这种,现在都兼容 sql 了,大融合不可避免。

至于分库分表,现在还有这么搞的? OLTP 就直接用 tidb 啊…

letking

51

letking      2021 年 4 月 9 日

请教楼主,折腾分表分库具体是指什么操作?如果数据到了需要分表的量级,那有什么 nosql 数据库可以更简单的处理呢?

simple2025

52

simple2025      2021 年 4 月 9 日

因为 mysql 历经考验,用的人比 mongo 多

Lemeng

53

Lemeng      2021 年 4 月 9 日

前面几楼是什么东东

ThanksSirAlex

54

ThanksSirAlex      2021 年 4 月 9 日

我就是不喜欢用 mongodb,至少以目前的开发经验来说没有经历过哪家公司用的非常好的,就仗着人家没有固定的 schema 数据就 XJB 乱存,然后全在代码里面加各种操作,我宁可老老实实用关系型数据库,每个字段的意思给我写写清楚,当然,这里说的是工程代码,自己写的代码随便怎么玩都行。

bthulu

55

bthulu      2021 年 4 月 9 日

mysql 出的早, 用的人多, 没动力换 mongo. 等 80 后 90 后这一批人都下岗了, 自然就都是 mongo 一把梭了

cmai

56

cmai      2021 年 4 月 9 日   ❤️ 1

@xiangyuecn 跟注解没有关系,同类调用不经过代理只是传播特性不生效而已,事务还是会展开的,但是你自定义的传播特性就会丢失,我这边如果没有特殊的业务需求需要用到自定义的传播特性是不管的,如果要用到自定义传播特性,那就在本类自己注入自己

moen

57

moen      2021 年 4 月 9 日

用过 Postgres 的都说好

iseki

59

iseki      2021 年 4 月 9 日 via Android

。。。一开始发帖时确实疏忽了…表达的很不准确,主要是吐槽分库分表,性能不够就分库分表,rdb 的功能废了大半。

iseki

60

iseki      2021 年 4 月 9 日 via Android

@passerbytiny 难道不是很多 rdb 出现单点的性能问题同时不好利用其本身的分布式分区机制才分库分表的吗?
既然这样为什么不去用本身把这些问题处理的很好的那部分 nosql,毕竟分完表,rdb 的 r 很多也都废了
事物的问题,我一开始确实没有深入考虑,的确目前没有现成的,像现有 sql 数据库那样好用的…

iseki

61

iseki      2021 年 4 月 9 日 via Android

@Macolor21 显然我吐槽的不是你说的这种分库的场景…每个客户端数据没啥关系分成多个非常合理

u2r1Hqo6HExmNsrt

62

u2r1Hqo6HExmNsrt      2021 年 4 月 9 日

用过 aws 的 dynamodb,确实自带的分区功能就不错了,之后看看 dynamodb 能不能蚕食 mysql 吧。

如果 mysql 的优势只是在事务的话,那应该有机会被取代的。

stabc

63

stabc      2021 年 4 月 9 日

分区就变 NOSQL 了?什么逻辑? NOSQL 本身也分区啊