bob体育官方平台
当前位置: bob体育官方平台 > 办公软件 >
bob体育官方平台Apache 卡夫卡“孕育”后生可畏款开源关全面据库:KarelDB - 数据库,开源 - IT之家

Java开发者对Apache Kafka应该不会感到陌生,这是一个分布式的发布订阅消息系统,作为一个非常重要的开源项目,它已经被许多公司以及产品用作关键组件。Kafka及其配套的Key-Value存储系统如今也越来越多地被用来为关系数据库提供持久性存储,大多数数据库也使用Key-Value存储系统作为基础。

大数据全套视频,需要的话联系我。

目前,编程人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂。

本文将要介绍的这款数据库正是由Apache Kafka提供支持,它同样使用了来自Kafka配套的Key-Value存储系统。

QQ:2583606117

大数据是庞大或复杂的数据集的广义术语,因此传统的数据处理程序不足以支持如此庞大的体量。在许多情况下,使用SQL数据库存储/检索数据都是很好的选择。而现如今的很多情况下,它都不再能满足我们的目的,这一切都取决于用例的变化。现在来讨论一些不同的非SQL存储/处理数据工具,例如,NoSQL数据库,全文搜索引擎,实时流式处理,图形数据库等。

近期面世的KarelDB是一款关系数据库,它几乎完全基于开源组件构建,包括用于SQL引擎的Apache Calcite以及用于事务和控制功能的Apache Omid。到目前为止,这款数据库仅支持单节点,但KarelDB的作者表示它在将来会扩大支持规模。

1、MongoDB——最受欢迎的,跨平台的,面向文档的数据库。 
mongodb是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库中功能最丰富,最像关系数据库的,随着MongDB 3.4版本发布,其应用场景适用能力得到了进一步拓展。 
MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。

bob体育官方平台 1

和其他的新兴数据库一样,KarelDB同样基于Kafka的嵌入式Key-Value存储系统和名为KCache的内存缓存。默认情况下,KarelDB使用配置成RocksDB缓存的KCache,由应用广泛的Kafka流处理软件提供支持。

2、Elasticsearch ——为云构建的分布式RESTful搜索引擎。 
ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。 
ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene。

1、MongoDB——最受欢迎的,跨平台的,面向文档的数据库。

KarelDB的作者,同时任职于Confluent公司(基于Apache Kafka提供流数据平台的供应商)的Robert Yokota表示:“这使得KarelDB能够支持规模更大的数据集和拥有更快的启动时间。”他还在最近介绍KarelDB的博文中补充道:“KCache可被配置成使用内存缓存而非RocksDB。”

3、Cassandra——开源分布式数据库管理系统 
最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。 
Apache Cassandra是一套开源分布式NoSQL数据库系统。集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。 
因Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有OpenJDK 及Sun的JDK。 Cassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉MySQL的朋友来说,操作会很容易上手。

MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库中功能最丰富,最像关系数据库的,随着MongDB 3.4版本发布,其应用场景适用能力得到了进一步拓展。MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。

与Confluent基于Kafka的平台不同,KarelDB不是流数据库。尽管如此,Yokota还是选择了关系数据库,主要是因为它基于Kafka支持的开源组件。因此,他认为KarelDB有机会流行起来。这些开源组件包括Calcite,它是一个SQL框架,支持将关系查询推送到数据存储系统,这个方法被认为可以提供更高效的处理。Yokota表示KarelDB会从即将推出的Calcite优化机制中“自动受益”。

4、Redis ——开源(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理。 
redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; Redis相比许多键值数据存储系统有相对丰富的数据类型; Redis可以将数据复制到任意数量的从服务器中。

2、Elasticsearch ——为云构建的分布式RESTful搜索引擎。

与此同时,Apache Omid框架与KarelDB一起使用,以支持Key-Value存储系统上的事务。Omid最初被设计为面向HBase NoSQL数据库的事务管理器,但由于它使用现有的Key-Value存储系统来维护事务元数据,因此与KCache轻松地配套使用。

5、Hazelcast ——基于Java的开源内存数据网格。 
Hazelcast 是一种内存数据网格 in-memory data grid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的“Master”,但是仍然有一个Leader节点(the oldest member),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。 
Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。

ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene。

Yokota指出,KarelDB将类似的功能堆叠在KCache的上面以管理事务。Omid还使用一种独有的名为多版本并发控制(multi-version concurrency control)的技术,以在其他关系数据库中实现“快照隔离”机制。此外,KarelDB还支持作为嵌入式数据库或服务器运行。在第二种情况下,它使用Apache Avatica来支持远程过程调用传输协议(Remote Procedure Call wire protocol)。

6、EHCache——广泛使用的开源Java分布式缓存。 
主要面向通用缓存、Java EE和轻量级容器。 
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider。主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。

3、Cassandra——开源分布式数据库管理系统,最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。

Yokota还认为使用Kafka运行这些开源组件有许多优点,其中一个就是多台服务器能够“追踪”同一主题集。也就使得多台KarelDB服务器可以作为一个集群运行,而不会产生单一故障点。”

7、Hadoop ——用Java编写的开源软件框架,用于分布式存储,并对非常大的数据集进行分布式处理。 
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。

Apache Cassandra是一套开源分布式NoSQL数据库系统。集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。因Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有OpenJDK 及Sun的JDK。 Cassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉MySQL的朋友来说,操作会很容易上手。

对了,KarelDB名字的灵感来自一位科学家——它以捷克科幻小说作家Karel Capek的名字命名,Karel Capek被认为发明了“机器人”一词。此外,还有一门编程语言也是以他的名字命名。

8、Solr ——开源企业搜索平台,用Java编写,来自Apache Lucene项目。 
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 
与ElasticSearch一样,同样是基于Lucene,但它对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化。

4、Redis ——开源内存数据结构存储,用作数据库,缓存和消息代理。

9、Spark ——Apache Software Foundation中最活跃的项目,是一个开源集群计算框架。 
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。 
Spark 是在 Scala 语言中实现的,它将 scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

Redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; Redis相比许多键值数据存储系统有相对丰富的数据类型; Redis可以将数据复制到任意数量的从服务器中。

10、Memcached ——通用分布式内存缓存系统。 
Memcached是一套分布式快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。Memcached作为高速运行的分布式缓存服务器,具有以下的特点:协议简单,基于libevent的事件处理,内置内存存储方式。

5、Hazelcast ——基于Java的开源内存数据网格。

11、Apache Hive ——在Hadoop之上提供类似SQL的层。 
hive是一个基于Hadoop的数据仓库平台。通过hive,可以方便地进行ETL工作。hive定义了一个类似于SQL的查询语言,能够将用户编写的SQL转化为相应的Mapreduce程序基于Hadoop执行。目前,已经发布了Apache Hive 2.1.1 版本。

Hazelcast 是一种内存数据网格 in-memory data grid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的“Master”,但是仍然有一个Leader节点(the oldest member),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。

12、Apache Kafka ——最初是由LinkedIn开发的高吞吐量,分布式订阅消息系统。 
Apache Kafka是一个开源消息系统项目,由Scala写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka维护按类区分的消息,称为主题(topic)。生产者(producer)向kafka的主题发布消息,消费者(consumer)向主题注册,并且接收发布到这些主题的消息。kafka以一个拥有一台或多台服务器的集群运行着,每一台服务器称为broker。

Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。

13、Akka ——用于在JVM上构建高并发,分布式和弹性消息驱动应用程序的工具包。 
Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业,系统几乎不会宕机。

在此我向大家推荐一个大数据开发交流圈: 658558542 突破技术瓶颈,提升思维能力 (☛点击即可加入群聊)

14、Hbase ——开放源代码,非关系型,分布式数据库,采用Google的BigTable建模,用Java编写,并在HDFS上运行。 
与FUJITSU Cliq等商用大数据产品不同,hbase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

6、EHCache——广泛使用的开源Java分布式缓存。主要面向通用缓存、Java EE和轻量级容器。

15、Neo4j ——在Java中实现的开源图形数据库。 
Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。

16、CouchBase ——开源分布式的NoSQL面向文档数据库,针对交互式应用程序进行了优化。 
如果以前没有NoSQL的使用经验,那么理解couchbase的时候关键有两点:延后写入和松散存储。该产品基于Apache CouchDB,并整合了GeoCouch(一个基于Erlang、紧密集成的地理空间索引系统,可支持LBS应用)。

7、Hadoop ——用Java编写的开源软件框架,用于分布式存储,并对非常大的数据集进行分布式处理。

17、Apache Storm——开源分布式实时计算系统。 
Apache Storm 是一个能近实时地在数据之上运行用户代码片段的流式数据处理框架。它实际上是一系列连在一起的管道。通常用于简单的分析任务 ,诸如计算,以及清洗,使其常规化,并且准备摄入用于长期存储的数据。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。

18、CouchDB——开源的面向文档的NoSQL数据库,使用JSON存储数据。 
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。CouchDB落实到最底层的数据结构就是两类B+Tree 。

8、Solr ——开源企业搜索平台,用Java编写,来自Apache Lucene项目。

返回顶部