由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 从争论中的一点思考
相关主题
MongoDB力压Cassandra傻逼太监懂个屁C*
MongoDB快超过Postgres了Mongo, Cassandra又干上了
现在做手机网游,选什么数据库合适?看来我的感觉不错,Hbase下降明显呀
mongoDB跟传统关系数据库比有什么优势?学了一个周末Cassandra,顺利拿到certificate
求推荐database的软件 (转载)Cassandra 比较 Dynamodb
鄙视芒果的被打脸了DynamoDB 只能在 create Table 时候建 indexes
AWS cloud 内部做log,大家怎么设计HBase的标准应用框架是什么?
MongoDB力压CassandraJava Tools and Technologies Landscape for 2014
相关话题的讨论汇总
话题: db话题: 异步话题: 时候话题: mongodb
进入Programming版参与讨论
1 (共1页)
n******1
发帖数: 3756
1
我真没想到还在争12306这个话题,其中一个核心是关于transaction
由于自己的一些经验,我很容易理解好虫的方案,当然可能也是四平八稳,也没什么惊
喜。另外一些人的方案是跳出框架的约束,重新思考问题的本质,将商业逻辑抽象。我
没有能力判断两者的可行和好坏。
我自己也一直没法真正理解transaction这个问题,我尝试去读《Java Transaction
Design Strategies》这本书,但是说实在,我看不懂这本书,虽然很多人说这本书已
经是最好,最容易理解。
似乎从一开始我们接受了关系型数据库天生的解决方案,生来就有外键,需要关联,需
要transaction,没有我们就不知道该怎么办。很多时候我们想优化,都说因为这个那
个约束,最后说是瓶颈,没法解决。我们经常被DBA这样忽悠。
关系型数据库出现的时候,很多人可能都没出生,有时候我们也不知道为什么今天发展
到这个情况
最近我接触了MongoDB,相信现在很多人都接触过了,它就是把传统RDBMS传统一套抛弃
,重新获得解放,在一些情况下非常好用。它目前已经不支持document(类似table)
之间的transaction,意思就是如果你想更新一个表,同时又想更新第二个表的时候,
你不能将两个操作作为All or nothing进行处理。
如果你需要,就只能自己去实现。
它这里解释了怎么用transaction最经典的例子来做解释,只是由A账户转账100到B账户
,怎么实现这个需求。
这里很详细实现了用一个额外的document(table)去记录怎么two phase commit,怎么
rollback
http://docs.mongodb.org/manual/tutorial/perform-two-phase-commi
可以看出来已经很复杂
z****e
发帖数: 54598
2
少来
mongodb是nosql里面最像db的一个
可以说就是因为很多人离不开db
所以才选择了mongo
否则谁用?
我就不用,我要db的时候用postgresql
不需要的时候用cassandra
z****e
发帖数: 54598
3
transaction因为太耗性能
而且无法scale out,所以才被提起
而要scale out自然会有所牺牲
这个牺牲往往就是数据的精度
当你的业务不涉及钱的时候
比如搜索引擎,这个精度是不可能绝对精准的
无所谓,但是一旦你的业务涉及金钱交易
那你往往不敢牺牲精度
因为一旦涉及金钱,错一点都要搞你半死
谁愿意让自己的钱少掉那么一点呢?
所以google卖个平板,并发才几十万还是几百万,就挂了
d*******r
发帖数: 3299
4
我倒是觉得lz很多理解得比较本质到点. Mongo 有时像传统 db,只是伪装,是无间道
而已.
我还是以前的观点,巨讨厌 SQL, RDBMS,从N年前本科学这玩意儿,就觉得用着憋屈,
就是一残疾.
一年一度的 12306 春晚帖又要开始了,哈哈
z****e
发帖数: 54598
5
mongo除了不支持transaction,其他就是一个db
根本说不上是一个nosql,跟db的共同点远多余跟其他nosql的共同点
cassandra什么才是对persistence的颠覆

【在 d*******r 的大作中提到】
: 我倒是觉得lz很多理解得比较本质到点. Mongo 有时像传统 db,只是伪装,是无间道
: 而已.
: 我还是以前的观点,巨讨厌 SQL, RDBMS,从N年前本科学这玩意儿,就觉得用着憋屈,
: 就是一残疾.
: 一年一度的 12306 春晚帖又要开始了,哈哈

z****e
发帖数: 54598
6
太多人思考问题时候脱离现实
一个最简单的思考
铁道部有没有现有的db?
当然有嘛
那怎么对付现有的db?
全部丢掉不用?
你是领导,你敢这么做?
你就忽悠吧
n******1
发帖数: 3756
7
好吧,我们可以开始讨论一下什么是DB

【在 z****e 的大作中提到】
: mongo除了不支持transaction,其他就是一个db
: 根本说不上是一个nosql,跟db的共同点远多余跟其他nosql的共同点
: cassandra什么才是对persistence的颠覆

d*******r
发帖数: 3299
8
哈哈,我也是被老赵的定义绕晕乎了
所以我提DB的时候,说的是 “传统DB”, 暗指 SQL, RDBMS 那一套东西

【在 n******1 的大作中提到】
: 好吧,我们可以开始讨论一下什么是DB
n******1
发帖数: 3756
9
来,你说说雅虎敢不敢抛弃它现在该死的门户,当某一天清晨起来,有人打开雅虎,然
后惊呼:妈呀,变天了,这还是雅虎吗

【在 z****e 的大作中提到】
: 太多人思考问题时候脱离现实
: 一个最简单的思考
: 铁道部有没有现有的db?
: 当然有嘛
: 那怎么对付现有的db?
: 全部丢掉不用?
: 你是领导,你敢这么做?
: 你就忽悠吧

z****e
发帖数: 54598
10
那这个文章大了
顺便,two phase commit是一种有缺陷的解决方案
并不能真正替代transaction
一般工作中还是尽量避免使用
因为网络本身并不稳定,第二次commit是有可能fail的
然后如何防止第二次commit挂掉,又有各种设计
这就是分布式算法一天到晚思考的问题
这些问题很棘手,所以一般工作中采用的方式是绕开
而不是迎头而上,否则你的麻烦可不小
常见的绕开就是分库,不要急着做成分布式
尤其是量比较小的时候,如果量大了的话,花点钱请点人
问问他们怎么做,如果你是接盘的,看看前人怎么做
前人做的work的话,就继续那么做
如果不work,那你接盘时候要小心点了,给自己留条退路未必是坏事
这个讨论短时间内不会有结果

【在 n******1 的大作中提到】
: 好吧,我们可以开始讨论一下什么是DB
相关主题
鄙视芒果的被打脸了傻逼太监懂个屁C*
AWS cloud 内部做log,大家怎么设计Mongo, Cassandra又干上了
MongoDB力压Cassandra看来我的感觉不错,Hbase下降明显呀
进入Programming版参与讨论
z****e
发帖数: 54598
11
雅虎的文章错一点没啥大问题
但是涉及到金钱的东西
你错一分钱,可能都会加班一个晚上
你要是没有这个概念的话
先找份工作做做,不要想当然

【在 n******1 的大作中提到】
: 来,你说说雅虎敢不敢抛弃它现在该死的门户,当某一天清晨起来,有人打开雅虎,然
: 后惊呼:妈呀,变天了,这还是雅虎吗

n******1
发帖数: 3756
12
有点我真是很佩服你,就是你打字很快!
这是我在买买提见过打字最快的

【在 z****e 的大作中提到】
: 那这个文章大了
: 顺便,two phase commit是一种有缺陷的解决方案
: 并不能真正替代transaction
: 一般工作中还是尽量避免使用
: 因为网络本身并不稳定,第二次commit是有可能fail的
: 然后如何防止第二次commit挂掉,又有各种设计
: 这就是分布式算法一天到晚思考的问题
: 这些问题很棘手,所以一般工作中采用的方式是绕开
: 而不是迎头而上,否则你的麻烦可不小
: 常见的绕开就是分库,不要急着做成分布式

z****e
发帖数: 54598
13
对键盘的熟悉多少页反映出你编码的这个历史

【在 n******1 的大作中提到】
: 有点我真是很佩服你,就是你打字很快!
: 这是我在买买提见过打字最快的

n******1
发帖数: 3756
14
我是一个蹩脚的程序员,半路出家,复制粘贴起步
雅虎好像也搞些女郎,想粘点黄边,也没出色

【在 z****e 的大作中提到】
: 雅虎的文章错一点没啥大问题
: 但是涉及到金钱的东西
: 你错一分钱,可能都会加班一个晚上
: 你要是没有这个概念的话
: 先找份工作做做,不要想当然

n******1
发帖数: 3756
15
我还没承认你就是看出来了,这反映了两个问题,1,你打字很快,2 你打字确实很快

【在 z****e 的大作中提到】
: 对键盘的熟悉多少页反映出你编码的这个历史
z****e
发帖数: 54598
16
说得牛头不对马嘴的
精度说的是你把100写成99,就会有人闹事,比如告你老板这种
但是一般web网页,你说亚洲杯决赛刚刚澳大利亚2-0胜了韩国
都不会有人吃饱了去告你老板,你看招聘就很清楚了
一旦涉及财务组,对于db的要求就拉高了,要求懂oracle这些
但是如果不涉及财务,db要求就不是那么高,dba也不是都吃干饭的
人家也有点看家的本领

【在 n******1 的大作中提到】
: 我是一个蹩脚的程序员,半路出家,复制粘贴起步
: 雅虎好像也搞些女郎,想粘点黄边,也没出色

g*****g
发帖数: 34805
17
我给的不是什么传统方案,上来就是 异步Cassandra收单,云端动态Scale. 后者12306
已经在做了,但是前者才是解决问题的关键。
至于后端,一天出几百万张票,我知道大机器Oracle都能做到1万以上,他们用内存数
据库也不过做到3万,不是本质的区别。

【在 n******1 的大作中提到】
: 我真没想到还在争12306这个话题,其中一个核心是关于transaction
: 由于自己的一些经验,我很容易理解好虫的方案,当然可能也是四平八稳,也没什么惊
: 喜。另外一些人的方案是跳出框架的约束,重新思考问题的本质,将商业逻辑抽象。我
: 没有能力判断两者的可行和好坏。
: 我自己也一直没法真正理解transaction这个问题,我尝试去读《Java Transaction
: Design Strategies》这本书,但是说实在,我看不懂这本书,虽然很多人说这本书已
: 经是最好,最容易理解。
: 似乎从一开始我们接受了关系型数据库天生的解决方案,生来就有外键,需要关联,需
: 要transaction,没有我们就不知道该怎么办。很多时候我们想优化,都说因为这个那
: 个约束,最后说是瓶颈,没法解决。我们经常被DBA这样忽悠。

n******1
发帖数: 3756
18
我觉得键盘只是一个因素,如果用telnet终端会快一点,用网页又要点解又要提交,导
致效率无法提高。有时候我们不知道瓶颈在哪里,当然如果大家都用网页,你确实很快

【在 z****e 的大作中提到】
: 说得牛头不对马嘴的
: 精度说的是你把100写成99,就会有人闹事,比如告你老板这种
: 但是一般web网页,你说亚洲杯决赛刚刚澳大利亚2-0胜了韩国
: 都不会有人吃饱了去告你老板,你看招聘就很清楚了
: 一旦涉及财务组,对于db的要求就拉高了,要求懂oracle这些
: 但是如果不涉及财务,db要求就不是那么高,dba也不是都吃干饭的
: 人家也有点看家的本领

z****e
发帖数: 54598
19
现在其实就是异步+cloud
订票和出票是两套系统在做
出票时候要自己去取票
订票时候mark一下就结束了

12306

【在 g*****g 的大作中提到】
: 我给的不是什么传统方案,上来就是 异步Cassandra收单,云端动态Scale. 后者12306
: 已经在做了,但是前者才是解决问题的关键。
: 至于后端,一天出几百万张票,我知道大机器Oracle都能做到1万以上,他们用内存数
: 据库也不过做到3万,不是本质的区别。

z****e
发帖数: 54598
20
好吧,你赢了,你的确很无聊,我不该回这贴

【在 n******1 的大作中提到】
: 我觉得键盘只是一个因素,如果用telnet终端会快一点,用网页又要点解又要提交,导
: 致效率无法提高。有时候我们不知道瓶颈在哪里,当然如果大家都用网页,你确实很快

相关主题
学了一个周末Cassandra,顺利拿到certificateHBase的标准应用框架是什么?
Cassandra 比较 DynamodbJava Tools and Technologies Landscape for 2014
DynamoDB 只能在 create Table 时候建 indexesCassandra vs mongo
进入Programming版参与讨论
n******1
发帖数: 3756
21
我也不理解什么是异步,为什么用异步,怎么用异步
有reference可以看吗?

【在 z****e 的大作中提到】
: 现在其实就是异步+cloud
: 订票和出票是两套系统在做
: 出票时候要自己去取票
: 订票时候mark一下就结束了
:
: 12306

n******1
发帖数: 3756
22
我正在算是异步处理你的回复吗?

【在 z****e 的大作中提到】
: 好吧,你赢了,你的确很无聊,我不该回这贴
T*****9
发帖数: 2484
23
request都应该做成async的,但是在db应该满足transaction
同时可以看看类似于 Twitter的snow flake,出票的时候不同的机器可以负责一个自己
的range

【在 z****e 的大作中提到】
: 现在其实就是异步+cloud
: 订票和出票是两套系统在做
: 出票时候要自己去取票
: 订票时候mark一下就结束了
:
: 12306

n******1
发帖数: 3756
24
重新思考原来我们认为理所当然的东西,是有必要的,是这样吗?

【在 T*****9 的大作中提到】
: request都应该做成async的,但是在db应该满足transaction
: 同时可以看看类似于 Twitter的snow flake,出票的时候不同的机器可以负责一个自己
: 的range

z****e
发帖数: 54598
25
legacy code
db本身就是一个非常大的legacy system
要改起来需要时间
现在绝大多数db操作都不是异步的
要改成异步的
目前做得比较靠谱的就是rxjava-jdbc
这个做出来之后,应该大多数db访问都会变成异步的
所以rxjava出来之后进一步打击了mongodb
本来mongodb被spark什么折磨得就很够呛了
twitter怎么做还是老话,twitter不涉及money
发错一个twit不会有太大问题,不值得参考
看看电商还比较靠谱点,至少应该看看twitter的财务组是怎么做的

【在 T*****9 的大作中提到】
: request都应该做成async的,但是在db应该满足transaction
: 同时可以看看类似于 Twitter的snow flake,出票的时候不同的机器可以负责一个自己
: 的range

1 (共1页)
进入Programming版参与讨论
相关主题
Java Tools and Technologies Landscape for 2014求推荐database的软件 (转载)
Cassandra vs mongo鄙视芒果的被打脸了
大牛讲讲mongoDB这种开源的怎么赚钱?AWS cloud 内部做log,大家怎么设计
大牛能不能讨论下cassandra, Hbase, MongoDB的对比MongoDB力压Cassandra
MongoDB力压Cassandra傻逼太监懂个屁C*
MongoDB快超过Postgres了Mongo, Cassandra又干上了
现在做手机网游,选什么数据库合适?看来我的感觉不错,Hbase下降明显呀
mongoDB跟传统关系数据库比有什么优势?学了一个周末Cassandra,顺利拿到certificate
相关话题的讨论汇总
话题: db话题: 异步话题: 时候话题: mongodb