Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Nosql及其主要产品简介 Slide 1 Nosql及其主要产品简介 Slide 2 Nosql及其主要产品简介 Slide 3 Nosql及其主要产品简介 Slide 4 Nosql及其主要产品简介 Slide 5 Nosql及其主要产品简介 Slide 6 Nosql及其主要产品简介 Slide 7 Nosql及其主要产品简介 Slide 8 Nosql及其主要产品简介 Slide 9 Nosql及其主要产品简介 Slide 10 Nosql及其主要产品简介 Slide 11 Nosql及其主要产品简介 Slide 12 Nosql及其主要产品简介 Slide 13 Nosql及其主要产品简介 Slide 14 Nosql及其主要产品简介 Slide 15 Nosql及其主要产品简介 Slide 16 Nosql及其主要产品简介 Slide 17 Nosql及其主要产品简介 Slide 18 Nosql及其主要产品简介 Slide 19 Nosql及其主要产品简介 Slide 20 Nosql及其主要产品简介 Slide 21 Nosql及其主要产品简介 Slide 22 Nosql及其主要产品简介 Slide 23 Nosql及其主要产品简介 Slide 24 Nosql及其主要产品简介 Slide 25 Nosql及其主要产品简介 Slide 26 Nosql及其主要产品简介 Slide 27 Nosql及其主要产品简介 Slide 28 Nosql及其主要产品简介 Slide 29 Nosql及其主要产品简介 Slide 30 Nosql及其主要产品简介 Slide 31 Nosql及其主要产品简介 Slide 32 Nosql及其主要产品简介 Slide 33 Nosql及其主要产品简介 Slide 34 Nosql及其主要产品简介 Slide 35 Nosql及其主要产品简介 Slide 36 Nosql及其主要产品简介 Slide 37 Nosql及其主要产品简介 Slide 38 Nosql及其主要产品简介 Slide 39 Nosql及其主要产品简介 Slide 40 Nosql及其主要产品简介 Slide 41 Nosql及其主要产品简介 Slide 42 Nosql及其主要产品简介 Slide 43 Nosql及其主要产品简介 Slide 44 Nosql及其主要产品简介 Slide 45 Nosql及其主要产品简介 Slide 46 Nosql及其主要产品简介 Slide 47 Nosql及其主要产品简介 Slide 48 Nosql及其主要产品简介 Slide 49 Nosql及其主要产品简介 Slide 50 Nosql及其主要产品简介 Slide 51 Nosql及其主要产品简介 Slide 52 Nosql及其主要产品简介 Slide 53 Nosql及其主要产品简介 Slide 54 Nosql及其主要产品简介 Slide 55 Nosql及其主要产品简介 Slide 56 Nosql及其主要产品简介 Slide 57
Upcoming SlideShare
Enhancing and testing repository deposit interfaces
Next

7 Likes

Share

Nosql及其主要产品简介

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Nosql及其主要产品简介

  1. 1. + NoSQL ---- NoSQL在社区项目中的实践 谭振林
  2. 2. + n  NoSQL n  What is NoSQL? n  Why NoSQL? n  Key-value n  Memcache n  Column-oritented n  Cassandra Agenda n  Document-database n  MongoDB n  Redis in action n  Practical project
  3. 3. + NoSQL What? Why? Family?
  4. 4. + What is NoSQL? Anti- n  ?革命? SQL? n  一类DB的总称 n  NoSQL的关键属性 n  ACID à BASE n  结构化数据 à Schema Free n  数据强调关系 à 没有关系 n  强调集中与 集群 à 大量分散计算节点的集群 n  接口统一,功能强大 à 接口简单,各擅所长
  5. 5. + Why NoSQL? n  CAP理论 n  Consistency -- 哪里的数据都一样 n  Availability -- 总是可读写 n  Partition Tolerance -- 系统容忍数据分区在物理网络断开 n  CA or CP, no CAP!!! n  应用(如:Web2.0 动态网站)需求新情况: n  强调: n  High performance - n  Huge Storage - 对海量数据的高效率存储和访问的需求 n  High Scalability && High Availability - n  不看重: n  数据库事务一致性需求 n  数据库的写实时性和读实时性需求 n  对复杂的SQL查询,特别是多表关联查询的需求
  6. 6. + NoSQL Family
  7. 7. + Size vs Complexity Size Key/value BigTable-impl Document-stores Graph-database Complexity
  8. 8. + Key/Value category Memcache
  9. 9. + Memcache n  From danga.com(LiveJournal) n  Features n  n  基于libevent的事件处理 n  内置内存存储方式 n  Memcached 通信的分布式 n  API: n  ADD/SET/REPLACE/APPEND/PREPEND/CAS n  GET/GETS n  Delete (Not really delete, only unavailable) n  INCR/DECR n  性能测试 n  Write:16222r/s(avg.), 18799r/s(max.) n  Read:20971r/s(avg.), 22497r/s(max.) n  衍生产品 n  dbcached : memcache+ +NMDB
  10. 10. + n  n  Consistent hashing n  hash(key) mode n (一致性哈稀) n  hash(key) mode (n/2)
  11. 11. + Column-oriented Cassandra
  12. 12. + Column-Oriented:Cassandra n  From Facebook, used by twitter/digg.com… n  Features: n  灵活的schema,增加或者删除字段非常方便(on the fly) n  支持range查询:可以对Key进行范围查询 n  高可用,可扩展:单点故障不影响集群服务,可线性扩展 n  memtable n  性能 n  MySQL > 50 GB Data n  Writes Average : ~300 ms n  Reads Average : ~350 ms n  Cassandra > 50 GB Data n  Writes Average : 0.12 ms n  Reads Average : 15 ms n  类似产品 n  Google BigTable n  Zvents HyperTable
  13. 13. + Cassandra API n  Keyspace -- database n  Column Family – table n  Key – key ,row? n  Column – value,cell? n  Super Column – 电话分移动、工作、住宅 n  Sorting -- Column name Column value n  set [Keyspace].<columnfamily>[<key>][<column>]=<value>; n  get [Keyspace].<columnfamily>[<key>]([<column>]); n  super column & index;
  14. 14. +
  15. 15. + Document databases mongoDB
  16. 16. + www.mongodb.org n  Open source, high performance, schema-free document- oriented database n  Goal : Blend performance and functionality
  17. 17. + Features of mongoDB n  面向集合存储,易存储对象类型的数据。 { n  模式自由。 comments: [ {by: "mathias", text: "...", replies: []} n  支持动态查询。 {by: "eliot", text: "...", replies: [ {by: "mike", text: "...", replies: []} n  支持完全索引,包含内部对象。 ]} ] n  支持查询。 } n  支持复制和故障恢复。 n  使用高效的二进制数据存储,包括大型对象(如视频等)。 n  自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可 动态添加额外的机器。 n  支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的 驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。 n  文件存储格式为BSON(一种JSON的扩展)。
  18. 18. + Large MongoDB deployment
  19. 19. + mongoDB in Worknik case -- a wiki & dictionary online service n  MongoDB承受了平均50万每小时的请求(包括周末和夜间),高峰期大约 是4倍的量。 n  MongoDB中有超过120亿个文档。 n  每个节点大约3TB数据。 n  一般情况下文档插入速度为每条8千条,峰值为每秒5万条。 n  单个Java客户端在千兆带宽下,对单个MongoDB节点的可持续的传输速度 为每秒10MB。同一个客户端的四个读取器可以保持每秒40MB的读取速度。 n  各种形式的查询都比MySQL的实现要快许多: n  示例的获取速度,从400ms减少为60ms。 n  字典项获取速度,从20ms减少为1ms。 n  文档元数据的获取速度,从30ms减少为0.1ms。 n  拼写提示的获取速度,从10ms减少为1.2ms。
  20. 20. + API of mongoDB n  Data Model n  Mongo System – a set of databases n  A database – a set of collections n  A collection – a set of documents n  A document – a set of fields n  A fields is a key-value pair n  A key is a name (string) n  A value is a n  basic type like string, integer, float, timestamp, binary, etc., n  a document n  an array of values
  21. 21. + API of MongoDB n  Native shell client n  javascript + json (bson) = cool!!! n  insert & update n  > doc = { author : 'joe', created : new Date('03/28/2009'), ... } n  > db.posts.insert(doc); n  >db.posts.update({author:’joe’},{“$set”:{“created”:new Date()}}) n  query n  >db.posts.find({author:’joe’}).sort({created:1}) n  >db.posts.find({$query:{author:’joe’},$orderBy {created:1}}) n  >db.posts.find({},{created:false})//without created field n  >db.things.find({x:{$gt:10}})// where x > 10 n  Advanced: $gt/$lt/$gte/$lte/$all/$exists/$mod/$ne/$in/$nin/$or… n  Regex: >db.posts.find({author:/^j/}) n  Javascript expression:>db.things.find(function(){return this.x>10}) n  Cursor:>db.things.find().skip(10).limit(10).count(true) n  Remove n  db.things.remove({n:1});
  22. 22. + API of MongoDB n  samus/mongodb-csharp n  Mongo mongo = new Mongo(); mongo.Connect(); n  var db = mongo.GetDatabase(“mydb”); n  Document collection: ICursor<Document> cursor = db.GetCollection(“Users”).FindAll(); foeach(Document doc in cursor) {} n  Typed collection: ICursor<User>cursor=db.GetCollection<User>(“Users”).FindAll(); foreach(User u in cursor){} n  Linq: IEnumerable<Person> people = db.GetCollection<Person>("Person") .Find(x => x.Age >= 18); var people = from p in collection.Linq() where p.Age >= 18 && p.FirstName.StartsWith("J") orderby p.FirstName select p.FirstName + " " + p.LastName;
  23. 23. + Redis in action •  What is redis? •  Features? •  APIs?
  24. 24. + What is redis ? n  Redis is an open source, advanced key-value store. n  Redis is a data structure server since keys can contain: n  strings n  hashes n  lists n  sets n  sorted sets n  In-memory database -- outstanding performace n  Persistance supported: snapshot & AOF n  Master-slave replication n  More: transction, pub/sub…
  25. 25. + Transaction & Pipeline n  MULTI n  Command1 n  Command2 n  Command3 n  Command4 n  EXEC/DISCARD n  MULTI Redis EXEC n  EXEC n  Client n  用WATCH/UNWATCH加乐观锁 n  n  Pipeline & MGET/MSADD…
  26. 26. + Persistence n  Snapshotting n  Configure auto snapshotting n  Command save & bgsave n  Procudure: n  fork n  父进程处理其它请求,子进程写临时文件(利用copy on write机制) n  子进程完成快照,将临时文件重命名替换老快照,完成,退出 n  Append-only file(AOF) n  Configure appendonly yes & always/everysec/appendfsync n  bgrewriteaof
  27. 27. + Replication n  特性 n  支持多个Slave n  Slave Slave n  同步不会影响Master处理请求,初次同步时,Slave会被阻塞直到完成初始同步 n  Slave可自动重连 n  用法: n  可用性 n  读扩展 n  Master关闭持久化,通过Slave做持久化 n  过程 n  Slave启动,发送Sync命令 n  Master在后台生成快照,并缓存新收到命令 n  将生成好的快照发送给Slave n  Slave加载快照 n  Master将快照后缓存的命令同步给Slave n  Master将收到的命令分发给Slave,保持一致性 n  配置 n  slaveof master_name master_port
  28. 28. + VM n  不活跃数据换到硬盘,提供更多内存空间 n  Redis VM 不直接使用OS的VM: n  OS VM以4k page为最小单位进行交换,远大于一般的redis数据 n  Redis集合对象会分散存在多个Page,造成大多数Page一直被当成活跃 n  Redis会在交换前做压缩,减少IO n  启用:vm-enable yes n  n  Redis VM diskstore
  29. 29. + Clients
  30. 30. + Benchmark n  A low profile box n  Intel core duo T5500 clocked at 1.66Ghz running Linux 2.6 : n  SET: 53684.38 requests per second n  GET: 45497.73 requests per second n  INCR: 39370.47 requests per second n  LPUSH: 34803.41 requests per second n  LPOP: 37367.20 requests per second n  Another one n  64 bit box, a Xeon L5420 clocked at 2.5 Ghz: n  PING: 111731.84 requests per second n  SET: 108114.59 requests per second n  GET: 98717.67 requests per second n  INCR: 95241.91 requests per second n  LPUSH: 104712.05 requests per second n  LPOP: 93722.59 requests per second
  31. 31. + Data type
  32. 32. + Strings
  33. 33. + Strings
  34. 34. + Expirarion
  35. 35. + Delete
  36. 36. + Lists
  37. 37. + Lists
  38. 38. + Queues
  39. 39. + Sets
  40. 40. + Sets
  41. 41. + Sets
  42. 42. + Sets
  43. 43. + Hashes
  44. 44. + Key convention
  45. 45. + Session storage
  46. 46. + Social Network
  47. 47. + Social Network
  48. 48. + Socia Network
  49. 49. + Socia Network
  50. 50. + Social Network
  51. 51. + Put all together
  52. 52. + [Create New] procedure
  53. 53. + Unique IDs
  54. 54. + Practical project whitch solution? Experence? Discussion
  55. 55. + n  与传统Web项目的区别 n  写少读多à读写都很频繁 n  n  n  n  n  Redis + MS SQL Server n  Redis n  Memcache n  Redis先期使用两台普通服务器做主-从互备 n  SQL Server中保存所有数据 n  n  应付访问量不高的非关键业务需求 n  应付非线上需求 n  ASP.NET MVC + AJAX
  56. 56. + n  实战经验 n  推-拉模式的选择 n  复杂度从查询过程转移到写入过程 n  发一条微博的过程 1.  缓存微博对象[serialized object string] 2.  更新发布者自己的微博列表[list] 3.  更新发布者的Profile,微博记数+1[serialized object string] 4.  如果是转发,被转微博的转发数 +1[serialized object string] 5.  如果是转发,更新最热转发微博的两个排序列表[zset] 6.  更新发布者所属地区、母校、公会等的用户活跃列表,以支持好友推荐功能[zset] n  将Redis中的数据分成Vector Cache和Row Cache n  Vector Cache Row Cache n  考虑将复杂的写入过程做成Pub/Sub模式 n  应对需求变更 n  隔离程序复杂度 n  n  Schema free n  n  n  n  AJAX Javascript去
  57. 57. + Q&A
  • yoyoung

    Jun. 16, 2012
  • brucesea

    Dec. 23, 2011
  • frankzhuang

    Oct. 26, 2011
  • guogzhao

    Oct. 21, 2011
  • caotao1570

    Oct. 1, 2011
  • haroldchan1

    Sep. 10, 2011
  • jacketwang

    Apr. 24, 2011

Views

Total views

2,538

On Slideshare

0

From embeds

0

Number of embeds

297

Actions

Downloads

0

Shares

0

Comments

0

Likes

7

×