Cloudant是一个面向Web和移动应用程序提供全面托管的数据库服务。它利用了云的可用性、弹性和影响范围,从而使应用程序能够扩展到更大规模,同时,始终可供最终用户使用,无论这些用户身在何处。
Cloudant非常适合作为操作型数据存储。在CAP,也就是一致性,可用性和分区兼容性三者中,Cloudant将可用性和分区兼容性放在首位,支持最终一致性。因此,与传统关系型数据库不同,Cloudant可以通过快速水平扩展,满足大规模的数据量的增长,支撑并发用户的激增,并能够更好的适应云架构。
Cloudant是开源技术和专利技术的组合。 它基于Apache CouchDB, 又实现了很多关键的功能性和非功能性的扩展,并提供了公有云和私有云的不同服务模式。Cloudant与CouchDB的API全面兼容,所以CouchDB的应用可以轻易地迁移到Cloudant。CouchDB以及其衍生技术PouchDB、TouchDB等,支持与Cloudant之间的数据复制。开发者可以利用这一复制特性,构建一个分布的混合数据层,把数据库读/写访问分发到网络边缘——像数据的内容发布网络一样。可读、可写的数据副本分发到多个位置或设备,最终用户可以得到读写距离最近的可用的数据源的服务。
易于使用,并且提供丰富的功能特性:
•JSON灵活的数据模型,还意味着你可以迭代的推出新特性,实现敏捷开发。
•高级索引技术,支持地理空间服务、全文搜索和实时查询分析。
•数据复制和同步技术,使数据持续可用,而且支持移动或远程用户离线使用数据。
•Cloudant DBaaS的大数据专家24x7地为客户监控和管理数据库集群,这种全面托管的服务方式下,客户不需要再为运营管理而烦恼。
•对外提供HTTP RESTful API访问,不需要特定的驱动程序。
可扩展性方面:
Cloudant可以在数据量和并发用户数两个方面提供大规模扩展,在整个应用生命周期,满足性能的服务等级协议。从1GB的数据量和10个beta用户,到企业级的PB级数据量和2千万每日活跃用户,Cloudant都可以提供适当的服务,并且服务成本与数据量和用户数相符,用少花费少,按需消费。某Apple应用开发公司在业务快速增长期,曾在一年之内从6个节点逐渐扩展到200多个节点,满足全球激增的在线用户需求。
持续在线
Cloudant DBaaS为在线应用提供操作型数据存储,提供24*7*365的服务。
• 与此同时,零数据丢失,每个数据都有多份跨越不同物理存储的备份拷贝。
• Cloudant分区兼容特性,可以处理集群内任意节点故障,集群间数据复制可以实现整个数据中心故障的灾备,能够满足大多数严格的HA/DR要求。
• 在线打补丁或者数据库升级,是Cloudant独特的特点,完全不需要停机。
• Cloudant对外提供两类技术服务。一种是Cloudant DBaaS,是在公有云上的实现;另一种是Cloudant Local本地安装的软件,帮助构建私有云中的数据服务。
Cloudant DBaaS
Cloudant DBaaS是全面托管的数据库服务,与传统IT的数据库实现有很大差别。以往我们构建数据库系统,往往采用DIY的模式,也就是从硬件和软件的部署安装运维管理,到数据设计开发,都需要亲力亲为。任何一个环节有问题,比如宕机,性能低,扩展问题或者采购以及人力成本,都会对整个项目造成影响。整体的规划,配置,以及项目集成测试占据了大量的时间和精力。一些托管服务,比如说Oracle DBaaS 以及 Amazon RDS ,以托管的模式,将硬件层面外包,但是软件的部署安装调试管理也同样消耗大量时间和成本。特别是对扩展性和可用性要求高的项目,当数据量从GB上升到PB时,DBA团队必须从一两个人,快速扩展到十几人甚至几十人,来应对大型数据库集群带来的挑战。
与DIY模式和托管模式不同,Cloudant提供Database as a Service,数据库即服务,可以使使用者将注意力关注在数据设计上,使开发更为快速的适合市场需要,提供更大更平滑的扩展,更优的性能和可用性。
Cloudant Local
Cloudant Local是的本地安装的软件版本,集成了Cloudant DBaaS的所有功能和优势,包括文本搜索、 Cloudant Query、地理空间支持、管理工作台。与开源JSON数据库不同,Cloudant核心技术经6年来大型系统( 比如Samsung, Microsoft, Fidelity)实际验证。Cloudant Local还增加了运营管理工具,包括用于集群扩展,监控,安全管理,变更管理的工具,这些工具是由 Cloudant DBaaS经验积累而成。
客户可以灵活的部署Cloudant Local,安装在本地数据中心、托管IDC或者IaaS云提供商。
混合云
在未来,混合云架构会成为企业级客户的一个主要选择。Cloudant支持混合云架构,在本地的Cloudant Local和公有云上的Cloudant DBaaS之间,客户自由、可流动的部署数据,完全不需要复杂的数据整合工作。
各行各业大大小小的公司都在使用Cloudant,这些行业包括电子商务、网上教育、游戏、金融服务、网络等。 Cloudant DBaaS网络为数百家客户面向大数据的应用程序提供支持,PB级的数据,每天数十亿个事务, 多家IaaS提供商托管的几十个数据中心遍布全世界。
采用Cloudant数据库服务,客户将得到随时可用的数据库集群,并且集群规模随需要扩展或者缩减,成本也随用量而调整。这为大多数客户提供了敏捷开发的最有力的支持。下面来具体介绍几个不同行业的例子,以供大家参考。
A. 某跑步健身类的手机应用,曾被苹果公司的AppStore评为最值得拥有的三款手机应用之一,可以监测我们跑步的速度,路线以及路程等。最开始,这款应用是在PostgresSQL上开发的。但是当越来越多的用户喜欢这款应用时,业务量爆炸式的增长带来了可扩展性的问题。每天超过2千万的活跃用户,关系型数据库集群无法支持。为了不影响用户体验,坚持不断优化前端开发,整个团队关注力更加集中到主营业务上,开发者将数据库迁移到Cloudant平台上,由Cloudant来提供集群扩展和其他数据库管理运维。
B. 三大智能手机厂商之一,当前全球出货量最大的手机厂商,推出的流媒体音乐应用。数据平台需要满足设计目标包括:支持其10亿手机用户;无缝集成整体应用环境;能够部署在AWS上;能够管理多种不同的数据格式, 包括用户档案,会话数据,歌曲喜好,多媒体历史,音乐文件元数据,使用和会话历史,等等。
C. 某大型国际金融投资公司,面向两千多万客户提供一个数字保险箱类的应用,这个管理系统,保证客户的敏感文件的安全,并且在在灾难性的灾害事件发生时可用。需要快速响应数据层扩展需求,能够地理分布数据,从而减轻灾害事件带来的损失。支持异地数据复制,获得持续性和可用性。
D. 为支付处理系统用户提供更好的体验,某支付卡公司推出的一个APP。使用者可以在汽车行驶过程中获得支付系统合作的供应商(比如加油站、食杂店)的位置,并根据与这些位置的距离、赠品、折扣等,得到优化路线。Cloudant不仅提供离线数据访问,还可以进行地理空间位置的计算。
E. 某国际大型制药集团,需要一个系统来管理大量的临床试验数据,并随时能够存储、查阅。这些数据结构变化多样,数据量的增长难以估算。以传统的关系型数据库来存储这些数据,系统扩容成本极高,也不能支持灵活的数据模型。Cloudant的灵活数据模型减少了传统开发的90%的代码量,易扩展的集群架构可以随需增长,DBaaS更降低了扩容成本。
你可以在www.cloudant.com上注册自己的账户,缺省情况下是按用量收费的多租户模式,月消费50美元以下可以免费使用。注册过程十分简单,这里略过。
登陆自己的帐户("https://accountname.cloudant.com/dashboard.html")后,可以做各种数据库操作。在主界面中,选择“Documentation”,将带领你到Cloudant的在线帮助文档界面("https://docs.cloudant.com/")。这些帮助文档从各个角度介绍了对Cloudant的使用和配置方式。 如果在使用中遇到问题,还可以选择“Support”,发信息给Cloudant大数据专家。对于多租户集群,一般一天内会有反馈。对于专有集群,Cloudant金牌服务是24*7的。
Cloudant与对外提供HTTP Restful API访问,通过RESTful JSON API可以对数据执行GET、PUT、查询、建索引、提请数据复制要求等,用户可以直接从浏览器访问,也可以通过应用服务器访问。
不需要特定的驱动程序,也与具体开发语言无关,所以Cloudant适用于各种支持Web或者Mobile开发的语言或平台,比如Java,Ruby,PHP,Python,.NET等等。Cloudant与开源 Apache CouchDB相兼容,开发者也可以使用CouchDB 的API库。
• 具有数十种语言的库
Cloudant的在线文档详细的说明了对各种语言的支持,像java、nodejs 、C#、C、PHP、Python、Ruby等等。(https://docs.cloudant.com/libraries.html)
如果希望对各种语言应用Cloudant的方式有一个全面的了解,也可以参考一个叫做haengematte的集合,介绍了bash-curl-jq、C#、C、clojure、haskell、java、javascript-jquery、nodejs、php、python、ruby、scala这些方法访问Cloudant的样例程序。
("https://github.com/cloudant/haengematte")。
• 可与第三方读缓存和写队列合作
Cloudant数据库中的每个文档都有一个doc_id,应用程序可以根据文档的 _id 找到文档来使用。Cloudant自动生成doc._id的主索引,并提供更为丰富的查询。在GET /<database>/_all_docs?后,可以加上startkey、endkey、include_docs、descending、limit、skip等参数,返回一个组文档。 |
二级索引在Cloudant中,又被称作View,是一个通过MapReduce来计算产生的b+树索引。这个索引是通过Cloudant后台的MapReduce操作作产生的,这些操作并行的运行在所有节点上,以增量的方式更新索引,反映新增、更改以及删除的文档变化。 创建二级索引由Map和Reduce两部分组成。Map部分通过JavaScript定义,比如下面的例子中,如果文档中存在一个叫做"type"的对象,并且它的值为"entry",就取出文档中的一个叫做userid的对象加入索引。 Reduce部分可以用Cloudant内建的_count、_sum、_stats等操作符,可以完成一些常用的在线分析。 对于每个数据库,可以创建任意数量的二级索引。二级索引的定义会被记录在设计文档中,同一个设计文档中的二级索引会被同时更新。有关二级索引的定义及方法请参见:“https://docs.cloudant.com/api.html#creating-views”。 基于二级索引的查询是在下述地址后面增加参数: “https://<youraccount>.cloudant.com/<yourdb>/_design/<design-doc>/_view/<view-name>” 可选的参数有descending、 endkey_docid、 group、 group_level、 include_docs、 inclusive、keys、 limit、 stale等,具体请参见: “https://docs.cloudant.com/api.html#querying-a-view”。
|
为了处理全文本搜索,Cloudant 将 Apache Lucene 文本索引和搜索功能集成到 Cloudant 中。这可以帮助您借助以下功能丰富您的 JSON 数据索引和查询: • 排序搜索 – 索引结果可以按照相关性或自定义排序字段进行排列 • 强大的查询类型 – 包括词组查询、通配符查询、邻近查询、模糊查询、范围查询等等 • 特定语言分析器 • 分面搜索和筛选 • 书签 – 以网络搜索引擎的风格对结果进行分页
更多技术细节请参见: https://docs.cloudant.com/search.html |
GeoJSON 支持也集成到 Cloudant 中,用于支持开发基于位置的高精度服务,这种服务是移动和传感器网络应用程序的常见要求。多数其他 NoSQL 数据库仅支持邻近性和边界框等有限的地理空间处理功能,而 Cloudant 则允许您: • 使用边界多边形、长方形、圆形或椭圆形创建查询 • 执行最近邻、路线优化和预测路径分析 • 存储广泛的数据类型,包括复杂的几何图形和元数据 • 使用坐标参考系 (CRS) 库
更多技术细节请参见: https://docs.cloudant.com/geo.html https://cloudant.com/using-cloudant-geospatial-tutorial/
|
多主复制功能支持 Cloudant 将数据的可读和可写副本分配到多个数据中心、设备和云提供商,并确保对副本所做的变更保持同步。相反,其他热门数据库即服务产品和多数关系数据库采用“主-从”复制架构,其中只有一个副本可以进行更新(瓶颈),其他副本为只读。
更多技术细节请参见: https://cloudant.com/creating-a-replication-job-tutorial/ https://cloudant.com/checking-the-status-of-a-replication-job-tutorial/ https://cloudant.com/creating-a-replication-job-using-curl-tutorial/ |
Cloudant Sync是Cloudant的移动端解决方案,它是为大用户群移动应用程序而生,并能很好的适应不稳定的移动网络环境,即使在离线状态下依然能够为你的应用程序提供持续的数据服务。 在移动互联网发达的今天, 任何成功的移动应用都可能面对用户群爆发式增长的机遇, 但同时,你是否做好了准备应对迅速增长的用户数据量、极速攀升的并发访问量和不稳定的移动网络环境。数据服务层无法满足扩展性需求和高可用性需求的需求,将是拖累你业务增长的噩梦。 根本的原因在于, 绝大多数数据库系统,为了满足数据一致性要求,都要求数据“更新”操作只能发生在一个统一的地点:一个“主”数据库上。这必然会导致性能上的瓶颈, 并使你的应用程序在离线的时候无法使用。
Cloudant Sync是Cloudant分布式数据库的移动端延伸,通过它,你可以将你的数据库部署到网络可及的最远范围——移动设备、遥控设备、传感器和物联网设备上,因此你的数据库将会更灵活的扩展,即使在没有网络连接的环境下,依然能够支撑你的移动应用程序运行。
更多信息请参考: https://docs.cloudant.com/libraries.html#supported-client-libraries https://cloudant.com/product/cloudant-features/sync/
|
CouchApps是从CouchDB (Cloudant也一样)直接提供的Web应用程序,大多由JavaScript和HTML5构建。如果你的应用程序满足这些约束,你可以将Cloudant同时作为数据库服务器和Web服务器,获得Cloudant的可扩展性和灵活性,更可以获得很多高级服务。 “部署应用程序,就像复制它到生产服务器一样简单。”通过CouchApps部署应用十分简单。 1)在安装了CouchDB(或者Cloudant Local)的服务器上安装CouchApps 2)执行“couchapp generate app myappname” 3)在生成的myappname目录下,对元数据文件配置远程数据库的链接,比如:"db":"https://apikey:apipassword@youraccountname.cloudant.com/yourdbname" 4)在myappname目录下会有一个_attachments目录,在这里放入应用的html源文件 5)在myappname目录下执行“couchapp push . remote” 仅这简单的五个步骤,你的应用程序已经部署在Cloudant上,并对外可以提供服务了。如果你希望更改代码,只需要替换4)中的html源文件,然后执行5)就可以了。 |
开始使用Cloudant时, 很多人提出的第一个问题是,如何将数据快速迁入、迁出Cloudant。我们提供了大量的工具可以帮助你迁移和转换数据,支持多种数据格式和多种类型的数据存储系统。例如:和关系型数据库系统如DB2、MySQL、Oracle。NoSQL数据库系统,如MongoDB。 CSV文件和HDFS文件系统等。另外,所有和Apache CouchDB兼容的工具,都同样支持Cloudant。 了解支持Cloudant的数据迁移的工具集,请访问如下链接: https://cloudant.com/for-developers/migrating-data/
|
https://github.com/cloudant-labs/location-tracker-couchapp
(由于后续会有在线直播专门介绍,这里就给一个链接)
由CSDN提供的 Cloudant网站的 复制方法参见5.5数据复制(链接) |