说说FoundationDB

FoundationDB

Apple收购了FoundationDB1,而且后者从开源立即变成了闭源。说实话,在此之前都没有注意到还有这么一个DBMS产品2。从官网上看,它的一些设计理念还是比较切合实际的,毕竟分布式DBMS存在很多难以解决的问题,要在短期内做到Oracle等传统RDBMS那样的程度是不现实的。例如它把重点放到了核心特性上,做了取舍3,4

  1. 可扩展性,采用Shared-nothing架构。
  2. ACID,支持可串行化的隔离级别。
  3. 容错,不仅仅是避免单点故障。
  4. 复制,多副本存储。
  5. 数据模型,有序KV存储。
  6. 变更通知,客户端可以订阅记录的修改。
  7. 原子操作,避免了Read-modify-write?
  8. OLTP,适合小的读和写。OLTP是有限制的,例如不支持修改太大的事务。
  9. OLAP,支持范围扫描大批数据。OLAP不等于大量数据扫描。
  10. 核心不支持查询语言,只有API。
  11. 并发控制采用MVCC和乐观并发控制。
  12. 线程模型,不是一连接一线程。
  13. 应用可以是交互式的,不依赖存储过程。
  14. 快照形式的备份。不确认这个是否保持一致性。

不过,从这些材料里并不能准确判断它实际的做法5以及完整的限制6。Quora里头找到一个2013年的问答7,说到了做这个系统的一些取舍,可以一看。还有其他的一些材料:

  1. http://2014.nosql-matters.org/cgn/wp-content/uploads/2014/05/Jennifer-Rullmann-NoSQL-and-ACID.pdf
  2. http://www.methodsandtools.com/archive/acidnosqldatabase.php 

    As Gilbert and Lynch note, their proof relies on an asynchronous model in which "there is no clock, and nodes must make decisions based only on the messages received and local computation." Mahajan revisit Gilbert and Lynch’s work and strengthen its result
    by employing an asynchronous model allowing local clocks, but no clock globally visible to all nodes. … Real Time Causal (RTC) consistency that is strictly stronger than eventual consistency. Percolator, Megastore, and, most recently, Spanner.

很多人喜欢把NoSQL、NewSQL与传统的RDBMS相比。在很大程度上,这种比较是不太容易的,因为它们针对的需求以及设计的权衡存在着巨大的区别。例如:

  1. 处理的数据量。传统的OLTP数据不会太大,集中式系统可以很好的处理。不过,一旦数据分布在不同的IDC,情况就很不一样了。
  2. 可靠性要求。集中式系统与分布式系统的处理方式和能力显然不可能一样。Paxos远在RDBMS成熟之后才出现。
  3. 数据模型。新的数据库很少能够支持好关系模型的,例如各种约束,以及衍生出来的索引、序列等特性。
  4. 查询语言。API还是SQL,甚至XQuery?
  5. 数据一致性。集中式系统的ACID显然要胜出一筹。
  6. 重要功能。存储过程、视图、触发器、数据仓库,很容易就可以列出一堆新系统很难做到的特性。

One size does not fit all。

Footnotes:

1

https://foundationdb.com/

2

https://en.wikipedia.org/wiki/FoundationDB

3

https://foundationdb.com/key-value-store/features

4

https://foundationdb.com/key-value-store/white-papers/anti-features

5

https://foundationdb.com/files/Architecture.pdf

6

https://foundationdb.com/files/FoundationDB-KeyValueStore-Spec-Sheet-3.0.x.pdf

7

https://www.quora.com/What-is-FoundationDBs-secret-sauce

时间: 2024-10-22 20:42:19

说说FoundationDB的相关文章

谈谈对CAP定理的理解

谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正. 从问题出发 假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务.每次用户在往服务器A写入数据的时候,A都往服务器B上写一份,然后再返回客户端.一切都运行得很好,

开源大数据处理系统/工具大全

本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考.下面是第一部分. 查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的J

JAVA - Sql解析工具fdb-sql-parser简单使用

由于想要解决Mybatis分页插件中count查询效率问题,因为order by很影响效率,所以需要一种方式处理sql,将order by 语句去掉. 试了好几个sql解析工具,最后选择了fdb-sql-parser. Maven依赖: <dependency> <groupId>com.foundationdb</groupId> <artifactId>fdb-sql-parser</artifactId> <version>1.

分布式系统设计权衡之CAP

写在最前: 1.为什么学习并记录分布式设计理念一系列相关的东西 在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是很多人理解的可用性,一致性等等问题,都是自己拍脑袋想的,或者根本和最原始表达的意思就不是一个东西,在这种情况下PK,就像不再一个频段的人在交流,除了争论,没有任何实质性的进展,所以有必要熟悉其理论基础,以免贻笑大方.(其实类似的例子还有很多,国内的技术人员都喜欢把一些此词模糊化,混淆而谈.例如XX云

世界级的开源项目:TiDB 如何重新定义下一代关系型数据库

著名的开源分布式缓存服务 Codis 的作者,PingCAP 联合创始人& CTO ,资深 infrastructure 工程师的黄东旭,擅长分布式存储系统的设计与实现,开源狂热分子的技术大神级别人物.即使在互联网如此繁荣的今天,在数据库这片边界模糊且不确定地带,他还在努力寻找确定性的实践方向. 在数据库的平行世界里,黄东旭以不同的方式在追随着自己的内心.他认为,通常传统的关系型数据库无法满足海量数据处理和分析时,新一轮的窗口期也随之需求开启,但是各类劣势架构.内存架构. NoSQL 等方案都不

史上最全开源大数据工具汇总

摘要 史上最全的开源大数据工具,非常实用,请务必收藏! 史上最全的开源大数据工具,非常实用,请务必收藏! 查询引擎 Phoenix Salesforce公司出品,Apache HBase之上的一个SQL中间层,完全使用Java编写 Stinger 原叫Tez,下一代Hive, Hortonworks主导开发,运行在YARN上的DAG计算框架 Presto Facebook开源 Spark SQL Spark上的SQL执行引擎 Pig 基于Hadoop MapReduce的脚本语言 Clouder

大数据工具集详

查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集.直接使用HBase API.协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒. Ph

大数据工具集

类别 名称 官网 备注 查询引擎 Phoenix http://phoenix.incubator.apache.org/ Salesforce公司出品,Apache HBase之上的一个SQL中间层,完全使用Java编写 Stinger http://hortonworks.com/labs/stinger/ 原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架 http://tez.incubator.apache.org/ Presto http:/

SQL解析器的性能测试

对同一个sql语句,使用3种解析器解析出ast语法树(这是编译原理上的说法,在sql解析式可能就是解析器自定义的statement类型),执行1100万次的时间对比. package demo.test; import java.io.StringReader; import java.sql.SQLSyntaxErrorException; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser