h*i 发帖数: 3446 | 1 nosql这种东西的好处就是多机,而多机主要的问题是网络的延迟和不可靠
,追求单机性能是本末倒置的。而分布式软件的设计难点就是对CAP定理的处理,
consistency, availability, partition tolerance,这三个不能兼得,只能保证两个
。很多分布式软件自称是CP的,也就是号称在网络partition (也就是网络的一部分不
能访问另一部分)的时候,能保持数据的一致性。这个Jepsen(https://aphyr.com/
tags/jepsen)就是用来测试这种广告是否属实的一个工具。
Jepsen测试目前测出来没问题的软件就只有Zookeeper。其他被测过的,C*, Mongo,
Redis,Kafka,ES, Riak, Areospike, 等等, 全都有设计问题,网路partition都会造
成数据不一致或者数据丢失。
常用的分布数据库里面,couchbase还没被测过,这个是用erlang写的网络部分,可能
没问题吧?还有就是被Apple买了的FoundationDB, 自己的内部测试就包括了Jepsen,
估计也没有问题。
其他的分布数据库,不是不知道自己的设计有问题,但为了追求性能,刷benchmark,
对CP啥的就不管不顾了,反正真正懂这玩意的人也不多,也不care,大多数人都是别人
用啥就用啥,市场营销做好了,用的人多了比啥都强。 |
h*i 发帖数: 3446 | 2 老邢这个破网站显然是AP, CP都不靠的,一个贴出来一遍还是两遍都是不确定的。
【在 h*i 的大作中提到】 : nosql这种东西的好处就是多机,而多机主要的问题是网络的延迟和不可靠 : ,追求单机性能是本末倒置的。而分布式软件的设计难点就是对CAP定理的处理, : consistency, availability, partition tolerance,这三个不能兼得,只能保证两个 : 。很多分布式软件自称是CP的,也就是号称在网络partition (也就是网络的一部分不 : 能访问另一部分)的时候,能保持数据的一致性。这个Jepsen(https://aphyr.com/ : tags/jepsen)就是用来测试这种广告是否属实的一个工具。 : Jepsen测试目前测出来没问题的软件就只有Zookeeper。其他被测过的,C*, Mongo, : Redis,Kafka,ES, Riak, Areospike, 等等, 全都有设计问题,网路partition都会造 : 成数据不一致或者数据丢失。 : 常用的分布数据库里面,couchbase还没被测过,这个是用erlang写的网络部分,可能
|
l*********s 发帖数: 5409 | |
h*i 发帖数: 3446 | 4 据说netflx95%的数据都在C*里面,而C*是已知会丢失数据的(也就是说,some C*
acknowledged writes are not in the DB!), 所以说有人说netflx的scaling
problem是个简单问题,其实是有道理的。还有人说facebook, google, twitter等等的
scaling problem也是简单的,也是有道理的,因为对上述公司来说,数据丢失不是什
么问题,跟她们的business model都没有直接的关系。
【在 h*i 的大作中提到】 : nosql这种东西的好处就是多机,而多机主要的问题是网络的延迟和不可靠 : ,追求单机性能是本末倒置的。而分布式软件的设计难点就是对CAP定理的处理, : consistency, availability, partition tolerance,这三个不能兼得,只能保证两个 : 。很多分布式软件自称是CP的,也就是号称在网络partition (也就是网络的一部分不 : 能访问另一部分)的时候,能保持数据的一致性。这个Jepsen(https://aphyr.com/ : tags/jepsen)就是用来测试这种广告是否属实的一个工具。 : Jepsen测试目前测出来没问题的软件就只有Zookeeper。其他被测过的,C*, Mongo, : Redis,Kafka,ES, Riak, Areospike, 等等, 全都有设计问题,网路partition都会造 : 成数据不一致或者数据丢失。 : 常用的分布数据库里面,couchbase还没被测过,这个是用erlang写的网络部分,可能
|
h*i 发帖数: 3446 | 5 对于别的business model,如果数据丢失是个问题的话,比如银行,现有的方案里面,
除了传统的SQL数据库,还有一种,就是“写”只用一个节点,“读”用分布式,并且
数据都是immutable的方式。
Datomic (datomic.com)就是这样的一个数据库,是Clojure的作者写的。有银行在用。
Datomic只管transaction和query, 用别的数据库做存储,包括一般的SQL数据库, C*,
riak, dynamodb, couchbase. Query语言是用Datalog.
我的公司除了用postgres以外, nosql试了很多种,最后都不理想,现在开始在用
Datomic,下面的存储用的是couchbase,这样horizontal scaling和ACID transaction
兼得,感觉很爽。唯一可惜的是Datomic不是开源的,免费可以用,但有限制。
【在 h*i 的大作中提到】 : 据说netflx95%的数据都在C*里面,而C*是已知会丢失数据的(也就是说,some C* : acknowledged writes are not in the DB!), 所以说有人说netflx的scaling : problem是个简单问题,其实是有道理的。还有人说facebook, google, twitter等等的 : scaling problem也是简单的,也是有道理的,因为对上述公司来说,数据丢失不是什 : 么问题,跟她们的business model都没有直接的关系。
|
h*i 发帖数: 3446 | 6 哈哈,老邢只管数钱,哪管啥CAP,帽子?只要不是绿帽子就行。
【在 l*********s 的大作中提到】 : A也够呛,经常访问不能 :-)
|
D*******a 发帖数: 3688 | 7 Kafka is CA though, so when network partition happens it loses data. This is
expected.
【在 h*i 的大作中提到】 : nosql这种东西的好处就是多机,而多机主要的问题是网络的延迟和不可靠 : ,追求单机性能是本末倒置的。而分布式软件的设计难点就是对CAP定理的处理, : consistency, availability, partition tolerance,这三个不能兼得,只能保证两个 : 。很多分布式软件自称是CP的,也就是号称在网络partition (也就是网络的一部分不 : 能访问另一部分)的时候,能保持数据的一致性。这个Jepsen(https://aphyr.com/ : tags/jepsen)就是用来测试这种广告是否属实的一个工具。 : Jepsen测试目前测出来没问题的软件就只有Zookeeper。其他被测过的,C*, Mongo, : Redis,Kafka,ES, Riak, Areospike, 等等, 全都有设计问题,网路partition都会造 : 成数据不一致或者数据丢失。 : 常用的分布数据库里面,couchbase还没被测过,这个是用erlang写的网络部分,可能
|
h*i 发帖数: 3446 | 8 丢数据不能说就是"consistent", 因为, 100% data loss = 100% guaranteed
consistency. 一般人理解的”consistency“不认为丢数据是可以接受的。
“Kafka’s replication claimed to be CA, but in the presence of a partition,
threw away an arbitrarily large volume of committed writes.”
在常人看来,这就是不consistent的,我写了,你也回我说写好了,结果数据没写进去
,这叫什么consistency? 按人的标准,这不是撒谎么?
is
【在 D*******a 的大作中提到】 : Kafka is CA though, so when network partition happens it loses data. This is : expected.
|
D*******a 发帖数: 3688 | 9 是不consistent,因为违背no network partition的assumption
partition,
【在 h*i 的大作中提到】 : 丢数据不能说就是"consistent", 因为, 100% data loss = 100% guaranteed : consistency. 一般人理解的”consistency“不认为丢数据是可以接受的。 : “Kafka’s replication claimed to be CA, but in the presence of a partition, : threw away an arbitrarily large volume of committed writes.” : 在常人看来,这就是不consistent的,我写了,你也回我说写好了,结果数据没写进去 : ,这叫什么consistency? 按人的标准,这不是撒谎么? : : is
|
h*i 发帖数: 3446 | 10 没有network partition, 要CAP何用?
network必然是会partition的。
【在 D*******a 的大作中提到】 : 是不consistent,因为违背no network partition的assumption : : partition,
|
|
|
D*******a 发帖数: 3688 | 11 you can argue with jay kreps
http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafk
【在 h*i 的大作中提到】 : 没有network partition, 要CAP何用? : network必然是会partition的。
|
g*****g 发帖数: 34805 | 12 任何一个公司,数据都不是简单的非黑即白。integrity要求高的通常数据量小,反之
亦然。所以RDBMS和NoSQL有很好的互补。没人要求你一个数据库把什么都做了。
,
transaction
【在 h*i 的大作中提到】 : 对于别的business model,如果数据丢失是个问题的话,比如银行,现有的方案里面, : 除了传统的SQL数据库,还有一种,就是“写”只用一个节点,“读”用分布式,并且 : 数据都是immutable的方式。 : Datomic (datomic.com)就是这样的一个数据库,是Clojure的作者写的。有银行在用。 : Datomic只管transaction和query, 用别的数据库做存储,包括一般的SQL数据库, C*, : riak, dynamodb, couchbase. Query语言是用Datalog. : 我的公司除了用postgres以外, nosql试了很多种,最后都不理想,现在开始在用 : Datomic,下面的存储用的是couchbase,这样horizontal scaling和ACID transaction : 兼得,感觉很爽。唯一可惜的是Datomic不是开源的,免费可以用,但有限制。
|
N*****m 发帖数: 42603 | 13 所以只能用CP系统?
你得考虑Partition的概率和损失数据造成的经济损失;和SLA满足不了造成的经济损失
【在 h*i 的大作中提到】 : 没有network partition, 要CAP何用? : network必然是会partition的。
|
h*i 发帖数: 3446 | 14 No need for argument. Just saying what it is.
CA啥的都是市场营销,他要这么说没问题,他是做这个生意的,说啥都可以,信不信是
你我的问题。
我的公司整个infra都是以kafka为中心的,但我必须要知道what I am getting,不会
被他们的marketing所左右。That's my point.
【在 D*******a 的大作中提到】 : you can argue with jay kreps : http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafk
|
g*****g 发帖数: 34805 | 15 你这有single point of failure,写好了,复制到其他节点之前当了,数据就丢了
。没有银弹,只有各种不同妥协而已。
,
transaction
【在 h*i 的大作中提到】 : 对于别的business model,如果数据丢失是个问题的话,比如银行,现有的方案里面, : 除了传统的SQL数据库,还有一种,就是“写”只用一个节点,“读”用分布式,并且 : 数据都是immutable的方式。 : Datomic (datomic.com)就是这样的一个数据库,是Clojure的作者写的。有银行在用。 : Datomic只管transaction和query, 用别的数据库做存储,包括一般的SQL数据库, C*, : riak, dynamodb, couchbase. Query语言是用Datalog. : 我的公司除了用postgres以外, nosql试了很多种,最后都不理想,现在开始在用 : Datomic,下面的存储用的是couchbase,这样horizontal scaling和ACID transaction : 兼得,感觉很爽。唯一可惜的是Datomic不是开源的,免费可以用,但有限制。
|
D*******a 发帖数: 3688 | 16 可以scale out throughput
【在 h*i 的大作中提到】 : 没有network partition, 要CAP何用? : network必然是会partition的。
|
h*i 发帖数: 3446 | 17 Exactly.
We should know the limitations of our tools. That's my point.
【在 g*****g 的大作中提到】 : 任何一个公司,数据都不是简单的非黑即白。integrity要求高的通常数据量小,反之 : 亦然。所以RDBMS和NoSQL有很好的互补。没人要求你一个数据库把什么都做了。 : : , : transaction
|
D*******a 发帖数: 3688 | 18 可以scale out throughput
【在 h*i 的大作中提到】 : 没有network partition, 要CAP何用? : network必然是会partition的。
|
h*i 发帖数: 3446 | 19 Exactly, 我说的是要看你的business model是什么,不能看高大上的公司用了啥,自
己也要用啥。这些高达上公司的model可能完全和你不一样。他们不关心的东东也许你
要关心。
【在 N*****m 的大作中提到】 : 所以只能用CP系统? : 你得考虑Partition的概率和损失数据造成的经济损失;和SLA满足不了造成的经济损失
|
D*******a 发帖数: 3688 | 20 那就是您对cap的理解的问题了。kafka在一些情况下就是会丢东西的。人家也没有over
claim什么。
btw,所有用kafka的公司,都多多少少有不少complain,包括netflix。这玩意里面陷
阱不少。
【在 h*i 的大作中提到】 : No need for argument. Just saying what it is. : CA啥的都是市场营销,他要这么说没问题,他是做这个生意的,说啥都可以,信不信是 : 你我的问题。 : 我的公司整个infra都是以kafka为中心的,但我必须要知道what I am getting,不会 : 被他们的marketing所左右。That's my point.
|
|
|
g*****g 发帖数: 34805 | 21 Kafka 是准备在单数据中心里用的,所以它放弃P是可以理解的。对我们来说比较麻烦
的是auto-scaling和cross-region replication。
over
【在 D*******a 的大作中提到】 : 那就是您对cap的理解的问题了。kafka在一些情况下就是会丢东西的。人家也没有over : claim什么。 : btw,所有用kafka的公司,都多多少少有不少complain,包括netflix。这玩意里面陷 : 阱不少。
|
N*****m 发帖数: 42603 | 22 horizontal scaling和acid兼得,这100%是广告语,想都不用想
,
transaction
【在 h*i 的大作中提到】 : 对于别的business model,如果数据丢失是个问题的话,比如银行,现有的方案里面, : 除了传统的SQL数据库,还有一种,就是“写”只用一个节点,“读”用分布式,并且 : 数据都是immutable的方式。 : Datomic (datomic.com)就是这样的一个数据库,是Clojure的作者写的。有银行在用。 : Datomic只管transaction和query, 用别的数据库做存储,包括一般的SQL数据库, C*, : riak, dynamodb, couchbase. Query语言是用Datalog. : 我的公司除了用postgres以外, nosql试了很多种,最后都不理想,现在开始在用 : Datomic,下面的存储用的是couchbase,这样horizontal scaling和ACID transaction : 兼得,感觉很爽。唯一可惜的是Datomic不是开源的,免费可以用,但有限制。
|
h*i 发帖数: 3446 | 23 不对,这个写的节点的single point of failure正是ACID的保证,数据在没复制到其
他节点之前,这个transactor节点是不会ack的,所以数据是要么写好了,要么没写好
,不存在“说是写好了,其实没写好”的问题。
这儿的妥协是牺牲availablity guarantee,而不是ACID。实际使用中,Datomic
transactor不停的写heartbeat到存储,有一个standby transanctor来读heartbeat,
发现heartbeat停了就自动升级补上,这中间有一段时间系统”写“是不available的。
但由于读是distributed,所以对读多写少的应用还好。
【在 g*****g 的大作中提到】 : 你这有single point of failure,写好了,复制到其他节点之前当了,数据就丢了 : 。没有银弹,只有各种不同妥协而已。 : : , : transaction
|
h*i 发帖数: 3446 | 24 当然是广告语。horizontal scaling只是读,写是单机的,能scale多少?
【在 N*****m 的大作中提到】 : horizontal scaling和acid兼得,这100%是广告语,想都不用想 : : , : transaction
|