【云计算学习教程】OCP(开源计算项目)简介

2023-05-16

说起开源软件,大家应该多少都听过一些,就是软件源代码公开,任何人都可以下载和免费使用并遵循某种开源协议的软件。而开源计算项目(Open Compute Project,OCP)是一套开源硬件,它是由 Facebook 公司主导,众多 IT 巨头公司参与的针对数据中心定制的硬件设计规范,包括机房、机柜、服务器、存储、网络设备的定制设计规范,以及云端硬件的管理规范。

只要一个人有资金并且有时间,参考这些规范和购买相应的配件,也能单独做出非常可靠的东西(如设计合理的机房、服务器、交换机等)。可参考开源计算项目的官方网站。

开源计算项目针对的是 IT 架构的第一层——基础设施层,目前大型的云服务提供商或者社交网站热衷于定制自己数据中心的硬件,包括机柜、服务器、存储和网络设备。由于这种硬件是针对应用软件的特点定制的,所以计算效率非常高;完成相同的计算任务,相比其他硬件,能源消耗要低很多。云端硬件发展的另一个趋势是云设备提供商提供的云计算一体机(具体可参考《IT系统组成》教程)。

开源计算项目中的主板和服务器设计规范包括针对 ARM、AMD、INTEL 的 CPU 的主板的设计规范,高可用性服务器、片上系统和电源的设计规范,同时提供了物理结构的 CAD 设计图纸。图 1 所示的主板和服务器是 PenguinComputing 公司根据这些规范生产的。

PenguinComputing公司生产的主板和服务器
图 1 PenguinComputing 公司生产的主板和服务器

开源计算项目中的子项目“存储”,分别就冷存储、Fusion-io 等发布设计规范,图 2 所示的存储器就是参考此规范设计并生产的。

存储器
图 2 存储器

另外,也有一些开源存储软件的解决方案,比较有名的有 Openindiana、Nexentastor、FreeNAS、OpenFiler,性能也是依次降序排列的。当然,如果只是自己使用,那么建议采用Oracle Solaris 11+Napp-It 的最佳方案,Oracle Solaris 11 可从 https://www.oracle.com/solaris/solaris11/index.html 下载,Napp-It 可从 http://www.napp-it.org/ 下载。这些解决方案的核心都采用了 ZFS 文件系统。

ZFS 文件系统最早是由 Sun 公司开发的,Oracle 公司收购 Sun 后,从 ZFS 2.8 版本之后就不再开源了,闭源的 ZFS 增加了不少新功能,如加密,但是有人在 ZFS 2.8 版本的基础上继续开发新功能,这样开源的代码就与正宗的 ZFS 代码分道扬镳了。

除这些专门的存储设备外,在云计算和大数据时代,分布式存储系统具备更大的优势,采用成百上千台甚至上万台计算机组成海量数据存储系统,拥有更高的带宽、更高的 IOPS 和更好的可用性,容量也具备更佳的伸缩性。例如 Ceph、Lustre、GlusterFS、pNFS、GPFS,都是一些优秀的企业级的开源分布式存储项目。

服务器虚拟化组件有哪些?

在云端,虚拟化属于基础设施层,具体包括服务器虚拟化、网络虚拟化和存储虚拟化,虚拟的目的是为了池化物理资源。在服务器虚拟化领域,VMware(现已被 EMC 收购)已耕耘了很多年,把持了大部分的市场。后来者微软、思杰都想有所突破。

微软推出 Hyper-V 并在短时间内进行了版本快速更替,其与操作系统紧密捆绑、简单易用的特征,使得采用微软的云计算解决方案成为了最简洁的商业化方案。另外,微软拥有从操作系统到应用软件的全部产品线,再加上成千上万个基于 Windows 的第三方应用软件,微软具备很强的竞争优势。

思杰自从收购 XEN 并进军虚拟化市场以来,表现平平,于是被逼开源它的 XenServer 产品,使得 XEN 重新回到开源社区。另外,思杰还把云管理工具 CloudPlatform 卖掉,重回 OpenStack 社区。

在开源社区,美国的红帽公司一直也在尝试整合开源资源并形成自己的一整套云计算产品,其核心是已经并入 Linux 内核的 KVM 虚拟机。

开源社区中的另一个不容忽视的成员就是 Oracle VM,Oracle 公司有点怪,其总裁拉力·埃里森一方面讨厌开源软件,另一方面又离不开开源软件,比如他们推出的 Oracle Linux 采用 Linux 内核,推出的 Oracle VM 采用开源的 Xen。

红帽与微软类似,拥有从操作系统到应用软件的完整产品线,而且全部是开源的。云计算提供商都是技术性的公司,他们更倾向于采用开源的云计算解决方案,稳定、可靠、低成本注定了红帽公司在未来的云计算市场会有更大的作为。下面对开源的服务器虚拟化组件做简单介绍。

1. XenServer

XenServer 是基于 Xen 的虚拟平台,直接安装在物理的计算节点上,然后在上面创建更多的虚拟机。XenCenter 是云计算管理平台,通过它来管理众多的安装了 XenServer 的服务器(计算节点)、网络、存储及虚拟机。

XenCenter 把通过计算节点池来管理服务器,属于同一个池的服务器共享存储,而且最好是相同配置的机器,池里的虚拟机保存在共享存储中,一个虚拟机允许在池中的任何一台服务器上运行。

如图 1 示,包含三个服务器池,池中的每台服务器必须安装 XenServer,这些池通过一台安装了 XenCenter 的服务器来集中管理:创建池、把服务器添加到池或者从池中移除、在池中创建虚拟机、创建虚拟机模板、热迁移虚拟机、创建虚拟机快照等。

采用 XenServer 搭建最简单的云端就是只有一台安装了 XenServer 的服务器,然后在一台个人计算机上安装 XenCenter 来管理这台 XenServer 服务器。XenServer 和 XenCenter 都可以从 http://xenserver.org/下载,XenCenter 支持简体中文。

XenCenter
图 1 XenCenter

2. Red Hat Virtualization(RHV)

这是红帽公司发布的基于 KVM 的虚拟化平台软件。RHV 包含虚拟化管理工具(Red Hat Virtualization Manager,RHVM)、虚拟化软件(Red Hat Virtualization Host,RHVH)和虚拟化存储(Red Hat Virtualization Storage,RHVS)三个主要组件。其中,RHVH 直接安装在物理计算节点上,然后可在 RHVH 上运行虚拟机,如图 2 所示,通过 RHVM 集中管理众多的 RHVH 服务器。

逻辑上,先有数据中心(DataCenter),数据中心包含多个集群(Cluster)、存储池和网络。一个集群由多台安装了 RHVH 的服务器组成,虚拟机创建在集群上,一台虚拟机允许运行在集群中的任何一台服务器上。存储是基于数据中心层面的,“数据中心”是一个逻辑概念,不一定是局限在地理位置上的机房,也可能跨机房,或者在一个机房里存在多个数据中心。

RHVH架构
图 2 RHVH 架构

用户通过 SPICE 协议连接到虚拟机(需要安装 SPICE 客户端软件),访问格式是 SPICE://<计算节点 IP>:端口,这里的 IP 是虚拟机的宿主服务器的 IP 地址,每台虚拟机在宿主机上对应一个端口,后面教程中会讲解具体内容。更详细的介绍参考红帽官方网站。

3. Oracle VM Server

Oracle VM Server 是由 Oracle 公司发行的、集成 Linux 内核和 Xen 的服务器虚拟软件,因此与 XenServer 大同小异。配套发行的 Oracle VM Manager 云管理工具采用 Java 语言开发,不过其视野中的云端架构相对而言比较复杂。

4. OpenVZ

OpenVZ 容器是一个轻量级虚拟机,容器里是一个完整的操作系统环境,它的主要用途是充当虚拟私有服务器,即 VPS。OpenVZ 是在 Linux 操作系统上(修改了宿主机上的 Linux 内核)创建隔离的运行环境,每个运行环境拥有自己的 IP、Root 用户、根目录和运行库,但是共享操作系统内核,即容器中不能再安装操作系统,允许安装更多的应用软件,如图 3 所示。

现在很多的 VPS 租赁公司几乎都是采用它来创建 Linux 的 VPS。Windows 的 VPS 目前有 Windows Server Container 和 Hyper-V Container。相对于其他虚拟机软件而言,在相同配置的物理机上,用 OpenVZ 可以运行更多的容器,从而大大降低每个用户的成本。在公共云中,更多的公司倾向于采用容器。类似的开源容器还有 Linux-VServer、LXC、FreeBSD jail、Solaris Containers。

OpenVZ架构
图 3 OpenVZ架构

但是最近兴起的 Docker 容器更轻便(容器只运行一个应用程序),其在谷歌公司的大力推动下发展迅速,而且谷歌发布了构建于 Docker 之上的开源的 Kubernetes 管理平台,使得管理运行在成千上万台计算机上的数十万个 Docker 容器变得异常轻松和简单。容器和虚拟机的区别如图 4 所示。

容器和虚拟机的区别
图 4 容器和虚拟机的区别

5. VirtualBox

这是 Oracle 发布的虚拟机软件,单机版,是 VMware Workstation 的替代品,能安装在 Windows、Linux、Mac OX X 和 Solaris 操作系统上。在由 VirtualBox 创建的虚拟机上,可以安装 Windows、Linux、FreeBSD 操作系统。VirtualBox 支持虚拟机快照、睡眠和分组、虚拟机导入导出、虚拟机克隆等。

常见开源操作系统有哪些?

开源的意思是系统的源代码是面向用户开放的,可以遵循开源协议(GNU)进行使用、编译和再发布。在遵守 GNU 协议的前提下,任何人都可以免费使用,随意控制软件的运行方式。最著名的开源操作系统是 linux。

开源系统相对于不开源的操作系统,如 Windows 和 Mac,开源操作系统最大的特点就是开放源代码和自由定制,但也会因为使用者的技术水平等关系出现很多不可预知的情况及维护问题,并且由于多数硬件和软件厂商并不支持开源软件。所以在驱动和软件源方面有很大困难,这就要求个人用户在选择系统时需要注意根据自己的实际情况来选择,这也是目前个人使用开源操作系统较为困难的最主要原因。

开源系统的分类:

  • Unix-like 类:Linux(这一族开发者众多,发行版本以千计,覆盖所有平台,并支持所有文件格式和所有网络协议)、FreeBSD、OpenBSD、NetBSD(覆盖所有平台)、DrangonflyBSD、Darwin/OpenDarwin/PureDarwin、Minix、GNU Mach/GNU Hurd、L4/Fiasco/Pistachio、syllable、禅OS
  • Unix 类:Opensolaris、AuroraUX、Plan9、Inferno-Plan 9。
  • dos 类:Freedos
  • windows-like 类:ReactOS
  • 原创类:House、KolibriOS、MenuetOS、HelenOS、Openvms
  • 还有其他的开源操作系统有:XFree86、ReactOS。

1)Linux 内核

Linux 内核诞生于 1991 年,目前已超过 1500 万行代码,价值达数百亿美元。以它为核心推出的操作系统发行版最为流行的有 RedHat、Suse、Ubuntu、Android、Centos、Debian 等,大概有上百种(具体可参考排行网站 http://distrowatch.com)。如果不特别指定,这些发行版统称为 Linux 操作系统。

Linux 操作系统开源免费、稳定可靠、病毒少、性能高,作为平台软件,被广泛应用在云端、数据中心。目前除微软外,全部云中心都采用 Linux 操作系统。CentOS 是 RedHat 的克隆版,应用比较广泛,网上具有丰富的资料和社区人气,现已被红帽收购。

2)FreeBSD

FreeBSD 是由美国加州大学伯克利分校开发的免费开源的操作系统,号称世界上最稳定、最高效、最安全、版权限制最少的操作系统。其他公司或者个人可以下载源代码,进行修改后不开源,比如一些网络设备生产商修改源代码后集成到自己的产品中,修改后的代码不开源是不违法的,这点与 Linux 操作系统不同。

FreeBSD 是最理想的网络服务器操作系统之一,可以从 http://www.freebsd.org/zh_CN/where.html 网站下载。鼎鼎有名的开源 NAS 项目 FreeNAS 就是采用了这个操作系统。

3)Illumos 内核

Oracle 收购 Sun 公司之后,关闭了 OpenSolaris 开源项目,推出闭源的 Solaris 11 操作系统和一个简化版的 Solaris 11 Express。Solaris 11 可以从官方网站下载,如果商用,就需要购买服务,个人和实验室可以免费使用。

OpenSolaris 的原班人马几乎都离开了 Oracle 公司,分别加入了以 illumos 为核心的各个厂商,一时间发布了许多个开源版本,如 Napp-it to GO、NexentaStor、OmniOS、SmartOS、StormOS、illumian、OpenIndiana,可分别应用于后台服务器、桌面计算机、存储、嵌入式等领域。这些发行版都以 illumos 为核心,这一点类似于各种 Linux 发行版,如红帽、乌班图、Debian 等 Linux 操作系统发行版都是以 Linux 为核心的。

利用 Napp-it to GO 自己搭建 NAS 存储是一个低成本的存储解决方案,其中核心是 ZFS 文件系统。但是开源的各个操作系统版本中 ZFS 文件系统只到 2.8 版本,更高的版本被 Oracle 公司闭源了,Oracle 公司现在已经推出了 ZFS 3.4 版本。如果自己使用,则可以采用 Solaris 11+Napp-it 组件企业级的 NAS 存储系统。不过 Napp-it 的界面太过复杂,用户体验非常糟糕。

常用数据库有哪些(附带数据库排名)?

表 1 所示列出了每一类数据库的前 3~5 名,排名会不断变化,实时的排名参见 http://db-engines.com/en/ranking 网站。

大类类别前3~5名说明
SQL关系数据库Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2遵循“表一记录”模型。按行存储在文件中(先第 1 行,然后第 2 行……)
NoSQL时序数据库InfluxDB、RRDtool、Graphite、OpcnTSDB、Kdb+存储时间序列数据,每条记录都带有时间戳。如存储从感应器采集到的数据
键/值数据库Redis、Memcached、Riak KV、Hazelcast、Ehcache遵循“键——值”模型,是最简单的数据库管理系统
文档数据库MongoDB、Couchbase、Amazon DynamoDB、CouchDB、MarkLogic无固定结构,不同的记录允许有不同的列数和列类型。列允许包含多值,记录允许嵌套
图数椐库Neo4j、OrientDB、Titan、Virtuoso、ArangoDB以“点——边”组成的网络(图结构)来存储数据
搜索引擎Elasticsearch、Solr、Splunk、MarkLogic、Sphinx存储的目的是为了搜索,主要功能是搜索
对象数据库Caché、db4o、Versant Object Database、ObjcctStore、Matisse受面向对象编程语言的启发,把数据定义为对象并存储在数据库中,包括对象之问的关系,如继承
宽列数据库Cassandra、HBase、Accumulo按照列(由“键——值”对组成的列表)在数据文件中记录数据,以获得更好的请求及遍历效率。一行中的列数允许动态变化,且列的数目可达数百万,每条记录的关键码不同,支持多值列。

下面对排名靠前的开源数据库做一些简单介绍。

1. MySQL/MariaDB

2008 年美国 Sun 公司花费 10 亿美元收购 MySQL,一年后 Oracle 公司又花费 60 亿美元收购了 Sun 公司,从此 Sun 公司的服务器、操作系统、MySQL 等产品线全部归属 Oracle 公司。

拉力·艾立森奉行的经营哲学是“竞争不过它,我就买了它”。竞争不过,说明竞争对手的产品更具优势,所以收购它,从而变成自己的优势。几十年来,Oracle 从一家小型数据库公司变成今天覆盖硬件、平台软件、数据库、中间件、应用软件各个层次产品线的 IT 巨无霸,靠的就是美国的良好环境和总裁奉行的收购策略。

MySQL 数据库占据中小型数据库应用市场的半壁江山,在这块市场,Oracle 数据库明显占下风,巅峰时世界上超过 70% 的网站后台都采用 MySQL 数据库。但是自从被 Oracle 公司收购后,MySQL 发展明显趋缓,是继续开源还是闭源,Oracle 公司一直没下定论。于是 MySQL 的原班人马陆续离开 Oracle 公司,另立炉灶,推出了 MariaDB 开源数据库。

MariaDB 继承了 MySQL 小巧精悍、简洁高效、稳定可靠的特征,并与 MySQL 保持兼容。时至今日,已有 Google、Facebook 等知名企业把应用从 MySQL 切换到了 MariaDB 上,各种 Linux 发行版的操作系统默认数据库都开始采用 MariaDB;而 Apple 公司反应更快,当 Oracle 公司收购 Sun 公司时,就切换到了 PostgreSQL 数据库。

截至 2014 年年末的数据库综合排名,MySQL 继续位居第二名,但是其表现出来的颓势较明显,而 MariaDB 却具备强劲的生命力。

MariaDB 是一个开源的免费的关系数据库,截至发稿前的最新版本是 10.0.15,安装包可从 https://downloads.mariadb.org 网站下载。整个安装包大约 200MB,几乎能在所有的操作系统上安装和运行,与 Oracle 数据库、SQL Server、DB2 等商业数据库动辄好几张光盘相比,算是短小精悍了。

另外,也可以从这个网站下载数据库的源代码。对于非数据库型的 SaaS 云提供商来说,云端采用 MariaDB 是最好的选择,而且可以轻松搭建数据库集群。

2. PostgreSQL

PostgreSQL 能被苹果公司大量使用并替换早期的 MySQL 数据库,说明其一定有不俗的表现。在 2014 年年末的数据库排行榜上,PostgreSQL 位居第四位,号称世界上最先进的、最安全的开源数据库,也是面向对象的关系数据库。

华为内部局域网接入控制系统 SPES 也采用 PostgreSQL 数据库,在 Linux 操作系统上运行,极少出问题。经过十多年的磨砺,如今 PostgreSQL 数据库具备如下特点:

  • 面向对象,安全性极高,能运行在全部主流的操作系统上,完全 ACID 兼容。
  • 支持外键、连接、视图、触发器和存储过程(多语言)。
  • 支持最新的 SQL 2008 标准的数据类型,包括整型、数字型、字符型、布尔型、可变字符型、日期型、时间戳、自增长型以及各种二进制对象(如图片、声音和视频等)。
  • 提供了各种流行语言的编程接口,如 C/C++、Java、.NET、Perl、Python、Ruby、Tcl、ODBC 等。

PostgreSQL 数据库同时具备很多众多令人振奋的优点,比如在线备份、数据域、表分区、表空间、嵌套事务、时刻点恢复、两段式提交、多版本并发控制、子查询等。

在 PostgreSQL 中,数据库大小没有限制,表大小上限为 32TB,一条记录的大小上限为 1.6TB,字段大小上限是 1GB,一个表包含的记录数没有限制,一条记录的字段数上限为 1600 个,一个表上创建的索引数目没有限制。

另外,SQLite 是一个非常小型的 ACID 兼容的关系数据库,适合嵌入式系统。

3. InfluxDB

InfluxDB 是一个开源的时间序列数据库,能应付极高的写和查询并发数,主要用于存储大规模的时间戳数据(每条记录自动附加时间戳),如 DevOps 监控数据、应用系统运行指标数据、物联网感应器采集的数据及实时分析的结果数据等。InfluxDB 具备如下特征:

  • 全部用 Go 语言编写,并被编译成单一运行程序,无须第三方依赖。
  • 简洁、高效地写和查询 HTTP(S)编程接口(API)。
  • 通过插件能与其他的数据采集工具集成,如 Graphite、collectd、OpenTSDB。
  • 可以搭建高可用性的 InfluxDB 环境。
  • 量身定制化的类-SQL 语言。
  • 允许给序列数据附加标签来创建索引,以便快速高效查询。
  • 通过定义策略轻松实现自动失效过时的数据。
  • 基于 Web 的管理界面。

对于一个具体的时间序列应用来说,除存储外,还需要集成数据采集、可视化和告警功能。为此,InfluxData 社区相应提供了 Telegraf(数据采集)、Chronograf(数据可视化)、Kapacitor(告警)三个开源项目,再加上 InfluxDB,能部署成一个完整的时间序列应用系统(简称为 TICK)。这四者的关系如图 1 所示。

数据采集示意图
图 1 数据采集示意图

4. Redis

Redis 是遵循 BSD 开源协议的存储系统,数据存储在内存中,因此具备极高的性能,可用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串、哈希、列表、集合、带范围查询的有序集合、位图、hyperloglogs 和带半径查询的地理空间索引。

Redis 内置了复制、脚本语言编程、最近最少使用(LRU)淘汰、事务以及不同级别的磁盘持久化等功能,通过 Redis Sentinel 和集群自动分区机制实现高可用性。Redis 采用 C 语言编写,能运行在 Windows、MacOS X、Linux、Solaris 等操作系统上,不过 Linux 是其最佳的运行平台,无须第三方依赖,它提供了最广泛的编程语言接口。

5. MongoDB

MongoDB 是排名第一的文档数据库,属于 NoSQL 大类,诞生于 2009 年,正好是云计算兴起的前夜。MongoDB 采用 C++ 语言开发,能运行在 Windows、MacOS X、Linux、Solaris 操作系统上,提供了绝大部分计算机语言的编程接口。保存在 MongoDB 中的一条记录称为一个文档,类似 JSON 语法,例如:

img

从上面的例子可以看出,一个文档就是“键:值”对的集合。

MongoDB 的主要优势包括:高性能、富查询语言(支持 CRUD、数据聚合、文本搜索和地理空间查询)、高可靠性、自动伸缩架构、支持多存储引擎。MongoDB 适合文档存储、检索和加工的应用场合,如大数据分析。

6. Neo4j

Neo4j 是一个用 Java 语言开发的图数据库,它将结构化数据存储在由“点—边”组成的网络(数学术语叫“图”)上而不是表中。与关系数据库相比,图数据库擅长处理大量复杂、互连接、低结构化的数据。这些数据变化迅速,需要频繁查询,如果使用关系数据库,那么这些查询会导致大量的表连接,因此会产生性能上的问题。

Neo4j 重点解决了拥有大量连接的传统关系数据库在查询时出现的性能衰退问题。Neo4j 还提供了非常快的图算法、推荐系统和 OLAP 风格的分析,而这一切在目前的关系数据库系统中都无法实现。Neo4j 提供了广泛使用的 REST 接口,能够方便地集成到基于 Java、PHP、.NET 和 JavaScript 的环境里。

Neo4j 使用 Cypher 语言进行增删改操作,例如:

img

img

创建了两个节点:变量“e1”和“e2”,标签“员工”,属性“{……}”。

img

创建了一条边,最终形成下图,如图 2 所示。

最终形成
图 2 最终形成

7. Elasticsearch

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,用于存储、搜索和近乎实时地分析大规模数据。Elasticsearch 常被人们用于构建具备复杂搜索功能的应用系统,比如维基百科和优步的搜索,再比如网店中搜索商品、商业智能、日志收集与分析、价格告警等。利用 Elasticsearch 实现的数据采集、存储和可视化套件 ELK(Elasticsearch、Logstash、Kibana)在日志分析领域应用最为广泛。

8. Caché

大概 20 年前,人们提出了后关系型数据库的概念,目前已有不少产品,其中由 InterSystems 公司开发的 Caché 是后关系型数据库中的领头羊,它提供 3 种方式访问数据:对象访问、SQL 访问、直接对多维数据数组访问,而且 3 种访问方式能够并发访问同一数据。多维数据结构和多种数据库访问方式构成了后关系型数据库的基础。

Caché 数据库具备如下一些特点:

1)速度快

Caché 数据库在同等条件下查询相同数据,比 Oracle 等普通数据库要快 7~20 倍。

2)节省存储空间

存储空间可能节省 2/3,而基于 Caché 的应用程序,比原来基于关系型数据库的应用程序运行有可能快 20 倍。

3)使用简单

Caché 数据库支持标准 SQL 语句,因此不太熟悉 M 语言的用户依然可以轻松对数据库中的数据进行操作。

4)接口容易

Caché 数据库支持 ODBC 标准接口,因此在与其他系统进行数据交换时非常容易,同时 Caché 亦可以将数据输出为文本文件格式,以供其他系统访问调用。

5)真正的三层结构

Caché 数据库能够在真正意义上实现 3 层结构,实现真正的分布式服务,便于做横向扩张。

6)对象型编辑

Caché 数据库是真正的对象型数据库,开发时用户可直接用数据库定义自己想要的对象,然后再在其他开发工具中调用该对象的方法和属性即可完成开发工作,非常方便。

7)支持 Web 开发

Caché 数据库提供自带的 Web 开发工具,使用、维护非常方便,符合当今软件业发展的趋势。

8)价格便宜

Caché 数据库的价格比 Oracle 数据库要便宜很多。

Caché 数据库在欧美的医疗系统使用最为普遍,被医疗界公认为首选的数据库,国内中山大学第三附属医院、深圳南山医院、北京安贞医院等也采用 Caché 数据库

9. Cassandra

Cassandra 是在 Google 的 Bigtable 基础上发展起来的 NoSQL 数据库,由脸谱于 2008 年用 Java 语言开发,目前被贡献给 Apache 基金会。Cassandra 被称为“列数据库”,这里的“列”不是指关系数据库中一个表中的列,而是由“键—值”对组成的列表(语法与 Python 语言中的列表相同),如:

img

Cassandra 中一行数据语法是“一行的键={列,列,…}”,一行可包含上百万列,比如:

img

Cassandra 中的列族(ColumnFamily)格式是“列族名={若干行}”,一个列族可包含几十亿行,例如:

img

一个 Cassandra 运行实例管理很多键空间(Keyspace),Keyspace 相当于关系数据库管理系统中的数据库,一个键空间包含很多列族。键空间、列族、行、列的关系如图 3 所示。

键空间、列族、行、列的关系
图 3 键空间、列族、行、列的关系

所以,Cassandra 中的寻址是一个四维或者五维哈希表:

img

比如:

img

返回广东理工职业学院(gdpi)计算机系(computer)张三(zsan)这个学生的年龄。

OpenStack 生态中的 HBase 也是列数据库,目前排名第二。


转载于:http://c.biancheng.net/cloud_computing/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云计算学习教程】OCP(开源计算项目)简介 的相关文章

  • 让开始学java的我困惑的问题解析

    前面已经对java一些基础概念进行了理解 xff1a Java 包 package 详解 java中文件名 类名之间的关系 java中类的main方法总结 文章目录 一个java文件中可以有多个class xff0c 但是只能有一个是pub
  • Jar包详解

    jar包的一些事儿 关于 JAR 包我们应该知道的s
  • astra 深度相机 + orbslam2 ~ 稠密建图

    在ROS下运行ORB SLAM2 主要包括以下几步 xff1a 一 创建ROS工作空间 二 下载usb cam xff08 单目相机驱动包 xff09 三 下载深度相机驱动包 四 下载ORB SLAM2稠密建图代码 五 运行 一 创建ROS
  • Java字符串的处理

    文章目录 本章学习要点 Java定义字符串 xff08 2种方式 xff09 直接定义字符串例 1 使用 String 类定义1 String 2 String String original 3 String char value 4 S
  • Java数字和日期处理:Java数字处理和日期类

    文章目录 本章学习要点 Java Math类的常用方法静态常量例 1 求最大值 最小值和绝对值例 2 求整运算例 3 三角函数运算例 4 指数运算例 5 Java生成随机数 xff08 random 和Random类 xff09 例 1例
  • Java内置的包装类

    文章目录 本章学习要点 Java包装类 装箱和拆箱装箱和拆箱包装类的应用1 实现 int 和 Integer 的相互转换2 将字符串转换为数值类型3 将整数转换为字符串 Java Object类详解toString 方法equals 方法例
  • Java输入/输出(I/O)流

    文章目录 本章学习要点 Java流是什么 xff1f 输入 输出流又是什么 xff1f 什么是输入 输出流输入流输出流 Java系统流例 1 Java字符编码介绍Java File类 xff08 文件操作类 xff09 详解获取文件属性例
  • Java异常处理

    文章目录 本章学习要点 Java异常 xff08 Exception xff09 处理及常见异常异常简介例 1 异常类型 Java中Error和Exception的异同例 1 Java异常处理机制及异常处理的基本结构Java try cat
  • Java注解

    文章目录 本章学习要点 Java注解 xff08 Annotation xff09 简介Java 64 Override注解Java 64 Deprecated注解Java 64 SuppressWarnings xff1a 抑制编译器警告
  • 如何夸人?

    文章目录 夸人要怎么夸到心坎上 xff1f 01 有理有据 xff0c 细节见诚意02 一如既往保持信任与支持03 由表及里 xff0c 夸TA前先夸自己04 先抑后扬 xff0c 对比式夸奖05 创造条件引导TA自夸 如何做一只舔狗 xf
  • Java继承和多态

    文章目录 本章学习要点 Java类的封装例 1 Java封装图书信息类Java继承 xff08 extends xff09 简明教程例 1 单继承继承的优缺点 Java super关键字详解super调用父类构造方法例1例2 super访问
  • java中接口(interface)详解

    分享记录一下java接口的博客 xff1a java中接口 xff08 interface xff09 详解 JAVA基础 接口 xff08 全网最详细教程 xff09
  • java引用详解

    文章目录 一 关于对象与引用之间的一些基本概念 new Vehicle Vehicle veh1二 Java对象及引用三 只有理解了对象和引用的关系 xff0c 才能理解参数传递总结 xff1a 什么是值传递 xff0c 什么是引用传递 为
  • python学习-def __init__(self)理解(1)

    python中 init 的作用 在python中创建类后 xff0c 通常会创建一个 init 方法 xff0c 这个方法会在创建类的实例的时候自动执行 实例1 实例化Bob这个对象的时候 xff0c init 方法会自动执行 xff1a
  • 学完java基础语法之后用来练习的不依赖框架的小项目

    刚学完一门语言基础语法之后 xff0c 一般都需要写一些小项目来检验我们的学习效果 xff0c 将所学的基础语法串联起来 xff0c 同时也熟悉一下用这门语言做项目的大概流程 但是此时学习的项目不能太复杂 xff0c 因此此时才刚学完基础语
  • java集合中接口和类的理

    一 背景 首先我们可以先了解一下类和接口的基础和使用方法 xff1a Java类和对象 java中接口 xff08 interface xff09 详解 Java继承和多态 然后再对java集合的基础了解一下 Java集合 泛型和枚举 有了
  • java多线程详解

    文章目录 多线程基础进程进程 vs 线程多线程 创建新线程线程的优先级练习小结 线程的状态小结 中断线程小结 守护线程练习小结 线程同步不需要synchronized的操作小结 同步方法小结 死锁死锁练习小结 转载于 xff1a https
  • Java项目管理工具Maven使用方法详解

    这边直接推荐两个比较好的教程 xff1a https www liaoxuefeng com wiki 1252599548343744 1309301178105890 http c biancheng net maven2 depend
  • maven引入依赖包,import依赖包,编译运行maven项目

    文章目录 IDEA中新建一个maven项目在pom xml中添加依赖包 xff0c 确定依赖包成功导入 xff0c 在项目中import依赖包怎么确定maven成功的导入了依赖包在项目中import导入的依赖包总结 在看这篇博客之前 xff
  • 怎样做一个好的PPT演讲

    文章目录 一 做好PPT演讲的重要性二 怎么做好PPT演讲1 做一个好的PPT2 做好演讲 三 分析一些比较好的PPT演讲视频四 实例解析和总结 一 做好PPT演讲的重要性 不管是在学生时期的竞赛展示 xff0c 毕业答辩 xff0c 我们

随机推荐