Introduction to Couchbase (Chinese)

1,149
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,149
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 大家好,谢谢参加。很荣幸能够在这里给大家介绍我们couchbase,以及在移动互联网时代,couchbase正在为移动互联网和开发者做的来满足互联网时代开发者的新的需求。
    就像逻辑思维所说的,死磕自己,愉悦大伙。
    在做的也许昨天已经参加了我们的CEO Bob发布了JSON Anywhere 的移动战略,我们几天就要介绍一下我们移动战略中的产品。
  • 我们做的是什么呢?今天我主要介绍一下Couchbase Lite.
    整个世界都在为移动应用,移动互联网而疯狂。Twitter在上周上市,证明了移动应用也推动了移动应用的发展。
    企业正在移动解决方案提供更好的客户体验,并更有效地经营他们的业务。
    今天的消费者依赖移动应用程序上的安排自己的生活,并保持与家人和朋友。他们有智能手机和平板电脑。他们希望保持自己的多个设备之间的数据同步时多人。例如,一个家庭的所有成员都可以使用的应用程序,可以帮助他们协调日程安排和购物清单。
  • 在介绍Couchbase Lite 之前,我们先看看应用程序的在过去,现在和未来 (昨天, 今天和明天)。在 80年代,主机时代,绿色终端,成千的应用,数百万的用户,而且主要的用户是这些应用的操作员。进步到90年代到2000的头几年,是PC个人电脑的时代,客户服务器架构,主要的应用如SAP,SIEBEL等等,服务了上亿的用户。到了现代,未来,云时代,移动设备,移动应用,移动互联网,以及无数其他联网的东西,应用发展到上百万,用户达到几十亿。
  • 看看应用的未来,是移动应用的时代。任何时间,地点,都有无数的移动设备也网络,云保持联系,Couchbase我们产品囊括了从云到设备,让设备可以在任何时间,地点与couchbase保持联系, 无论是单个用户的交互,多用户交互,还是与企业沟通,包括医院的本地传感应用。例如在可佩戴的设备上,把心跳等信息传输到云端,然后把心跳信息处理,找到健康模式,并把反馈发送给用户。我们还有很多的使用案例。
    医疗数据—medical data is a great fit for schemaless JSON storage. It’s also critical that it be available wherever the health care provider goes, regardless of network conditions.
    提供一个完整的解决方案,
  • 这就是我们的JSON无处不在的移动战略。
    移动互联网时代,越来越多的数据,而且更多的是非结构化和半结构化数据。 JSON是一个很好的处理非结构化和半结构化数据的办法。Couchbase server 是一个面向文档的数据库,JSON在web开发者中越来越流行,我们把JSON引入到移动设备上,让移动开发者能够采用JSON。这就是Couchbase Lite. 在传输JSON数据的过程中,利用Sync Gateway,不需要数据转换, 最终,数据以JSON的形式存储在couchbase 数据库。
  • 我们先看一个演示,看看json anywhere 如何解决一个的问题。
  • http://sync.couchbasecloud.com/grocery-sync/
  • 通过演示,可以看到我们的JSON anywhere 战略种,Couchbase 面向对象的数据库,可以在云端部署,也可以内部部署。在couchbase server 集群,我们把文档存储。
    移动设备上,有couchbase lite
    couchbase sync gateway 把二者联系起来,是couchbase server 和couchbase lite 同步。
    我们提供了完整的移动互联网的解决方案。
  • 云端,有couchbase server集群。面向文档的存储JSON数据库。易于扩展,非常高的一致的高性能。等等。
    Sync Gateway 采用HTTP协议, 做为couchbase server的前端,和couchbase lite同步。
    Couchbase的服务器应该部署在防火墙后面(如数据库通常是)。Sync Gateway部署在移动设备可以访问在互联网上,Couchbase server也可访问。当移动设备连接到SYNC网关,应采用强制访问控制和更新验证的政策。
    扩展Sync Gateway¶
    Sync Gateway可以扩展成集群.在集群里,所有的Sync Gateway是完全一样的, 每个HTTP请求定向到一个随机的节点实现负载平衡. Sync Gateway nodes are “shared-nothing,” so they don’t need to coordinate any state or even know about each other. Everything they know is contained in the central Couchbase Server bucket.
    All Sync Gateway nodes talk to the same Couchbase Server bucket. This can, of course, be hosted by a cluster of Couchbase Server nodes. Sync Gateway uses the standard Couchbase “smart-client” APIs and works with database clusters of any size
    Performance¶
    Keep in mind the following notes on performance:
    Sync Gateway nodes don’t keep any local state, so they don’t require any disk.
    Sync Gateway nodes do not cache much in RAM. Every request is handled independently. The Go programming language does use garbage collection, so the memory usage might be somewhat higher than for C code. However, memory usage shouldn’t be excessive, provided the number of simultaneous requests per node is kept limited.
    Go is good at multiprocessing. It uses lightweight threads and asynchronous I/O. Adding more CPU cores to a Sync Gateway node can speed it up.
    As is typical with databases, writes are going to put a greater load on the system than reads. In particular, replication and channels imply that there’s a lot of fan-out, where making a change triggers sending notifications to many other clients, who then perform reads to get the new data.
    We don’t currently have any guidelines for how many gateway or database nodes you might need for particular workloads. We’ll know more once we do more testing and tuning and get experience with real use cases
  • 超轻量
    1.嵌入式- 数据库引擎是一个库链接到应用程序,而不是一个独立的服务器进程。
    2.代码少 -  重要的移动应用,这往往是在蜂窝网络下载
    3.快速启动,因为移动设备的CPU比较慢
    4.低内存占用 - 典型的移动数据集都比较小,但有些文件可能有大量的多媒体附件。
    5. 良好的性能 -取决于您的数据和应用程序。
    面向文档:
    存储记录在灵活的JSON格式不要求预先定义的模式或标准化。
    文件可以有任意大小的二进制附件,如多媒体内容。
    应用数据格式可以随着时间而没有任何需要显式的迁徙。
    MapReduce的索引提供了快速查找,而无需使用特殊的查询语言。
    该值可以包含数组或者甚至嵌套对象。
    这可以让你构建你的数据在自然的方式,您的应用程序,而无需处理复杂的数据正常化或加入。
    iOS和Android设备的集成与您的应用程序框架提供了原生的,面向对象的API,此外,使用Web技术构建的应用程序可以使用Couchbase lite 的REST API。
    Syncable:
    一个数据库的任何两个副本可以纳入同步,通过一个有效的,可靠的,成熟的复制算法。
    复制功能支持与兼容的数据库。这使您的应用程序获得最好的品种同步功能。同个用户的数据不仅可以留在多个设备间同步,而且多个用户的数据一起被同步。
    同步可以按需或连续的(与延迟几秒钟)。
    设备可以与远程服务器上的一个大型数据库的一个子集同步。
    同步引擎支持间歇性和不可靠的网络连接。
    可以检测和解决冲突,在合并完全控制应用程序逻辑。
    修订树允许复杂的复制拓扑结构,包括服务器(多数据中心)和对等,不会丢失数据或虚假的冲突。
    couchbase提供本地的API无缝IOS(Objective-C)和安卓(Java)的发展。
    此外,它包括couchbase Lite塞在PhoneGap,它使您能够建立了iOS和Android应用程序,通过使用熟悉的Web应用程序的编程技术和移动开发框架PhoneGap开发你。
  • 具有这么多的功能的couchbase lite,到底可以为你做些什么?
  • 扩展Sync Gateway¶
    Sync Gateway can be scaled up by running it as a cluster. This means running an identically configured instance of Sync Gateway on each of several machines, and load-balancing them by directing each incoming HTTP request to a random node. Sync Gateway nodes are “shared-nothing,” so they don’t need to coordinate any state or even know about each other. Everything they know is contained in the central Couchbase Server bucket.
    All Sync Gateway nodes talk to the same Couchbase Server bucket. This can, of course, be hosted by a cluster of Couchbase Server nodes. Sync Gateway uses the standard Couchbase “smart-client” APIs and works with database clusters of any size
    Performance¶
    Keep in mind the following notes on performance:
    Sync Gateway nodes don’t keep any local state, so they don’t require any disk.
    Sync Gateway nodes do not cache much in RAM. Every request is handled independently. The Go programming language does use garbage collection, so the memory usage might be somewhat higher than for C code. However, memory usage shouldn’t be excessive, provided the number of simultaneous requests per node is kept limited.
    Go is good at multiprocessing. It uses lightweight threads and asynchronous I/O. Adding more CPU cores to a Sync Gateway node can speed it up.
    As is typical with databases, writes are going to put a greater load on the system than reads. In particular, replication and channels imply that there’s a lot of fan-out, where making a change triggers sending notifications to many other clients, who then perform reads to get the new data.
    We don’t currently have any guidelines for how many gateway or database nodes you might need for particular workloads. We’ll know more once we do more testing and tuning and get experience with real use cases
  • Sync Gateway使用通道,可以很容易地使大量的用户共享一个数据库,并控制对数据库的访问。
    通道是文档和用户之间的中介。数据库中的每一个文件属于一组通道,每一个用户允许访问的一组通道。
    使用通道可以:
       1. 分区数据集。
       2. 授权用户访问文件。
       3.  限制同步到移动客户端的数据量。
  • 先回忆以下我们的演示。
  • Creating a sync function is a more flexible way to map documents to channels. A sync function is a JavaScript function that takes a document body as input and, based on the document content, decides what channels to assign the document to. The sync function cannot reference any external state and must return the same results every time it’s called on the same input.
    同步函数可以更灵活的方式,渠道映射文件。 同步函数是一个JavaScript函数,文件内容作为输入,在文档内容的基础上,决定文件属于的渠道。同步函数不能引用任何外部的状态,相同的输入必须返回相同的结果。
  • 案例很多,我们简单介绍几个
  • Couchbase Lite 是一个嵌入式的数据库。我们先看看它式如何实现的。这页式应用程序运行时, 在iOS中, 把couchbase lite添加到框架中; 在Android 项目中,可以用Maven 依赖管理添加couchbase Lite. 这样couchbase lite 就和其他的类一样加入到了项目中。 我门用操作系统提供的存储,来存储json文档,移动应用采用本地的API ,在iOS上,应用采用couchbase Lite iOS 的API, 在Android 上,用Couchbase Lite android 版本的API。有其他的第三方的程序,例如phonegap采用html5。
  • 这些组件式本地的代码,在最下方,存储键值对,和JSON文档。理论上和Couchbase Server存储方式一样。 Map/reduce视图索引和Couchbase Server一样, 在couchbase server 上使用javascript, 在couchbase lite, 使用应用的语言。查询引擎运行在索引和map/reduce之上。 同步引擎是最复杂的地方。它有自己的线程,通过sync gateway 和couchbase server联系,在网络连接时,进行数据,更新, 变化的同步。 应用程序API时开发者开发应用使得接口。
  • bring up demo now
  • bring up demo now
  • 验证用户
  • Introduction to Couchbase (Chinese)

    1. 1. Couchbase  for  Mobile   Larry  Liu  (刘栋) - 高级工程师 larry@couchbase.com
    2. 2. Couchbase  Lite   唯一的移动平台专用 NoSQL数据库
    3. 3. 移动互联网 -- 下一代技术平台   1980   1990   2000   主机−绿色终端 个人电脑 客户端/服务 器 局域网/互联网 百万级 用户 亿级用户 千级应用 万级应用 2010   2020+   云,移动设备和应用, 无数其他的东西 十亿级用户 百万级应用
    4. 4. 移动应用 - 下一代应用 多用户交互 • 群和社交应用 (脸书,微信,微博, 游戏,视频) 单个用户的交互 •  语音,短信 •  个人应用   Couchbase     Server       与企业沟通 医院的本地 传感应用
    5. 5. JSON  Anywhere JS N Couchbase  Server   Sync Gateway Lite Server JS N JS N •  设备上的JSON •  传输中的JSON 开发者越来越喜欢 NoSQL数据库 不需要数据转换 •  云端的JSON 活的数据模型 高性能 以扩展性
    6. 6. 马上开始 • 下载 Couchbase Lite • 下载 Grocery Sync代码 • 复制Couchbase Lite到Grocery Syn c应用的framework文件夹 • 运行
    7. 7. 1.  下载  Couchbase  Lite   •  www.couchbase.com/communiCes/cn/couchbase-­‐lite  
    8. 8. 2.  下载  Grocery  Sync   •  github.com/couchbaselabs/Grocery-­‐Sync-­‐iOS  
    9. 9. 3. 复制Couchbase Lite option •   
    10. 10. 4. 运行 •   
    11. 11. 步骤   •  Couchbase Server URL: http://10.17.4.11:8091/index.html •  同步URL: http://10.17.4.11:4984/sync_gateway •  启动sync_gateway: ./sync_gateway -url http://10.17.4.11:8091 & •  开通GUEST权限: curl -X PUT localhost:4985/sync_gateway/_user/GUEST --data '{"disabled":false, "admin_channels":["public"]}' •  检查数据 curl http://localhost:4985/sync_gateway/_all_docs •  检查键 curl http://localhost:4985/sync_gateway/1444EC46-B921-4070-B0FCBA37E426C7C7
    12. 12. 现场演示
    13. 13. 完整的移动互联网解决方案  
    14. 14. 架构   企业内部部署 云端部署 Couchbase  Server   SERVER  1       Sync  Gateway   SERVER  2       SERVER  3       Sync  Gateway       Channel     Channel Channel Channel Couchbase  Lite  运行在 iOS  和 Android  上
    15. 15. Couchbase  Lite   唯一的移动设备NoSQL数据库 Couchbase   Lite     iOS   Couchbase   Lite     Android   Lite • 特色 ­  超轻量,安全的JSON数据库 ­  原生支持iOS,Android, REST API ­  完整的文档管理,索引,查询 ,和同步功能 ­  强大的冲突管理
    16. 16. 在Couchbase Lite时代之前…   •  在本地,可以使用SQLite或苹果 Core Data ­  有利于使用关系模型或非数据密集性的应用 ­  不利于对更直观和灵活的数据存储感 趣的移动 开发者 •  同步和存储可以使用文件分享服务 ­  这些服务不是数据库,不能提供数据库所具有功能 •  或者可以使用MBaaS ­  不能提供离线体验。 我们仍然在一个偶尔连接的 世界,一个好的应用必须考虑离线体验
    17. 17. Couchbase  Lite   全功能列表 功能   好处   本地APIs 使用专 REST APIs 基于你的 JSON 支持 使用专为面向对象的移动应用设计的 活的数据模型,即时适应你 的应用程序需要并且对应用程序不造成影响 易于同步 通过通道进行数据路由 只须几行代码就可以同步就绪;使 发者可以更专注于应用开发, 而不是同步 通过REST接口支持的点对点服务,使附近的设备即使离线也能 沟 通 使用户得到所需的数据来获得集中 联的体验 变化源 为 支持JSON的索引和查询 使用强大的二级索引来查询 验证插件 利用现有的第三方验证服务例如脸书,不需要自己 支持设备和云端的附件 对二进制数据,例如图片和大文件,进行与JSON文档不同的管理, 以获得不同的,更快的同步 通过REST接口支持点对点 为iOS和Android优化的API管理移动数据库 发需求, REST APIs 提供了一种替代的访问方法 发者提供数据变化的可视化和通知 设备上的数据 发
    18. 18. 为您服务 Couchbase   Lite     iOS   Couchbase   Lite     Android   Lite ­  使丰富数据密集型的本地应 用成为可能 ­  使用JSON 数据, 发变的更快 ­  使交互应用反映速度更快 ­  无论在线还是离线,应用总 是可用
    19. 19. 优点   JSON JSON JSO JSON N JSON          JSON  Anywhere   轻松同步       • 在设备上使用灵活的JSON, 可以在不影响后台的同时,修 改本地数据结构,并与本地数 据工作 • 毫不费力地使本地的更新, 制或协作共享同步到云端的数 据库 • 随着数据和同步的增长,水平 并可靠的扩展数据层
    20. 20. Couchbase  Sync  Gateway   容易可靠的把数据同步到云端 •  功能 •  通过同步功能的API实现 动态同步 •  易于管理 •  无缝扩展 Sync Gateway •  好处   开发时间减少90%   可扩展到支持上百万的用 户
    21. 21. 同步原理  
    22. 22. 采用通道来协作 •  对于每个文档,指定一组这个文档所属的通道 •  对于每个用户或设备,控制哪些通道是他们 有权使用的 •  只复制文档的子集到设备上 ­  用户定义的过滤功能 ­  只需要让用户知道一个文档是否需要被复制 •  可以对用户进行验证  
    23. 23. 数据流 Couchbase  Server   Server  1   Sync  Gateway   Channel Channel Server  2   Server  3   Sync  Gateway   Channel Channel Sync  Push   Couchbase  Lite  for  iOS  and  Android  
    24. 24. 数据流   Couchbase  Server   Server  1   Server  2   Server  3   ↻ JavaScript  Sync  Func@on   Sync  Gateway   Channel Channel Sync  Gateway   Channel Channel Couchbase  Lite  for  iOS  and  Android  
    25. 25. 数据流   Couchbase  Server   Server  1   Server  2   Server  3   Store  Data   Sync  Gateway   Channel Channel Sync  Gateway   Channel Channel Couchbase  Lite  for  iOS  and  Android  
    26. 26. 数据流   Couchbase  Server   Server  1   Server  2   Server  3   TAP/UPR   Sync  Gateway   Channel Channel Sync  Gateway   Channel Channel Couchbase  Lite  for  iOS  and  Android  
    27. 27. 数据流   Couchbase  Server   Server  1   Server  2   Sync  Gateway   Channel Channel Server  3   Sync  Gateway   Channel Channel HTTP  Changes   Couchbase  Lite  for  iOS  and  Android  
    28. 28. 通道  A   Doc  1   通道  A   Doc  2   通道B   Doc  2   Doc  1   Doc  2   通道A  &  B   通道B  
    29. 29. Data Data 数据路由
    30. 30. 数据路由 Data Data Data
    31. 31. Data Data 数据路由 Data
    32. 32. Data Data 数据路由
    33. 33. 数据路由 Data Data Data Data
    34. 34. Data Data Data 数据路由
    35. 35. Couchbase  Server   业界领先的NoSQL数据库 •  多种部署方案 ­  内部部署 ­  云端部署如Amazon ­  后台服务 •  Couchbase云 Server
    36. 36. 案例
    37. 37. Infinite  Campus   课堂管理工具和内容分发平台
    38. 38. Infinite  Campus   问题提出 •  课堂参与度不高 •  学生无法理解课堂资料 •  没有现成的,面向全体学生的多媒体的材料
    39. 39. Infinite  Campus   挑战和难点 •  如何在学生们所喜爱的智能手机上使用移动 或Web应用进行教学 •  如何利用实时把受到反馈并利用反馈有效 的指导课堂 •  如何为学生在校内外提供丰富的材料和内容
    40. 40. Infinite  Campus   解决方案 •  教室可以通过智能手机和Web客 户端准备符合国家标准的材料 •  教学内容分发到每个学生,并 得到实时反馈来指导教学 •  内容可以用来做离线学习或作业 ;学生脱机学习的进展可以同步到 Couchbase Server。学生一旦 连线,就可以受到教室的评估。
    41. 41. 移动教学 过去 教室,黑板,一刀切式的教学 现在 多媒体,自定进度,自适应,互动,随时随地
    42. 42. 过去 大而古怪的机器,收据打印机, 现金抽屉 POS   现在 简单,优雅的平板电脑,方正的按键, 电邮收据,触摸签名
    43. 43. 花费管理   过去 纸质的收据,手工表格输入, 纸质签名 现在 电邮相片收据,电子签名
    44. 44. 只要5分钟!!! 开始同步
    45. 45. 原理浅探 •  架构 •  代码解析
    46. 46. 应用程序运行时 (操作系统进程) 本地应用程序逻辑 同步 Couchbase  Lite   存储
    47. 47. Couchbase  Lite  组件 应用程序  API   同步引擎 查询引擎 Map/Reduce   视图索引 键/值对JSON存储  
    48. 48. Sync  Gateway  组件   Sync   REST  API   认证 通道变化 追踪 同步函数 到客户端 冲突管理 Couchbase 智能客户 端 到  Couchbase  Server   第三方认证服 务  
    49. 49. 代码解析
    50. 50. 模型   List Task Task Task Docume nt doc3 Docume nt doc23 Docume nt doc82 Docume nt doc99
    51. 51. JSON文档  
    52. 52. 同步功能   只需几行代码实现同步.   可编程的同步 •  在Sync Gateway的 配置文件中运行 •  访问控制 •  通道路由 •  验证更新
    53. 53. Sync  Gateway:  App  Logic  &  Storage   应用逻辑和存储   Authen@ca@on     function(doc,  oldDoc)  {   …   requireUser(oldDoc.owner);   …   channel(doc.channel);   …   access(doc.members,  doc.roomID);   }   App’s  Sync   Func@on   Revision/ Conflict   Management   rev 3a rev 1 rev 2 rev 3b Couchbase   Smart  Client   to  Couchbase  Server  
    54. 54. 集成    Couchbase  Lite的合作伙伴 Couchbase  Lite  Plugin  for  PhoneGap   hPp://plugins.cordova.io/#/com.couchbase.lite.phonegap   Couchbase  Lite  for  Xamarin   hPp://components.xamarin.com/view/couchbase-­‐lite/   Couchbase  Lite  Titanium   hPps://marketplace.appcelerator.com/apps/6706?1396013098  
    55. 55. 开始体验 mobile.couchbase.com/cn   应用实例 • hXps://github.com/couchbaselabs/Grocery-­‐Sync-­‐iOS   hXps://github.com/couchbaselabs/ToDoLite-­‐iOS   Couchbase  Cloud   hXp://www.couchbasecloud.com  
    56. 56. Q&A?   中国Couchbase  

    ×