3.4.1 键值数据库-一-一 存储机制 ☒ 数据结构--关联数组 关联数组中对 exampleArray[0]=hello world 键和值的限制 要比普通数组 宽松定义 exampleArray[pi]=3.1415 exampleArray['captialFrance']='Paris' exampleArray['ToDoList']={'Alice':'run reports;meeting with Bob','Bob':order inventory;meeting with Alice'} 数据存储机制--长期存储介质(硬盘、闪存盘)、内存 √数据保留在内存中,在RAM中进行读取和写入操作 √与某个键相关联的值若修改了,键值数据库更新RAM中的相应条目,然后 向程序发送消息,告知该值已更新。在程序执行其他操作时,键值数据库 可以把最近最新的值写入磁盘。 √内存数据的管理通常采用LRU(最久未使用)算法
exampleArray[0]=‘hello world’ exampleArray[pi]=3.1415 exampleArray[‘captialFrance’]=‘Paris’ exampleArray[‘ToDoList’]={‘Alice’:‘run reports;meeting with Bob’,’Bob’:order inventory;meeting with Alice’} 关联数组中对 键和值的限制 要比普通数组 宽松定义 数据结构----关联数组 数据存储机制----长期存储介质(硬盘、闪存盘)、内存 数据保留在内存中,在RAM中进行读取和写入操作 与某个键相关联的值若修改了,键值数据库更新RAM中的相应条目,然后 向程序发送消息,告知该值已更新。在程序执行其他操作时,键值数据库 可以把最近最新的值写入磁盘。 内存数据的管理通常采用LRU(最久未使用)算法 3.4.1 键值数据库----存储机制
3.4.1键值数据库--一 存储机制 ☒ 336 刘览器 ↑个 应用服务器 memcached memcached RDBMS RDBMS memcached memcached 首次方问:从RDBMS中取得数据保存至到nemcached 第二次后:从memcached中取得数据显示页面 键值数据库成为理想的缓冲层解决方案 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.4.1 键值数据库----存储机制 键值数据库成为理想的缓冲层解决方案
3.4.1键值数据库--一可扩展性 es 936 键值数据库实现扩展的方法: √主从式复制:主服务器负责在主记录上面执行所有的写 1号从服务器 入操作,并把主记录中的新数据复制到集群中的其它服务 器。其它服务器只能响应读取请求。 适用:读取量大于写入量的应用 优点:操作简洁: 2号从服务器 缺点:主服务器发生单点故障影响整个系统(改进: 依照某套协议将其中一台服务器提升为新的主服务器) 3号从服务器 服务 器1 √无主式复制:每台服务器都可以负责执行写入操作,并 把数据复制到其它的服务器 服务 服务 适用:写入请求较多的应用 器2 需解决的问题:多服务器同时写入时数据的一致性保证 服务 服务 器4 器3 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.4.1 键值数据库----可扩展性 键值数据库实现扩展的方法: 主从式复制:主服务器负责在主记录上面执行所有的写 入操作,并把主记录中的新数据复制到集群中的其它服务 器。其它服务器只能响应读取请求。 适用:读取量大于写入量的应用 优点:操作简洁; 缺点:主服务器发生单点故障影响整个系统(改进: 依照某套协议将其中一台服务器提升为新的主服务器) 无主式复制:每台服务器都可以负责执行写入操作,并 把数据复制到其它的服务器 适用:写入请求较多的应用 需解决的问题:多服务器同时写入时数据的一致性保证
3.4.1键值数据库--一键 ■将键名映射到不重复的相关位置 √哈希函数是一种可以接受任意字符串,并能够产生定长字符串的函数。 这些定长字符串为40位长度的16进制数值,一般不会相互重复。 ■通过键避免重复写入 √写入请求平均分配到不同的服务器上(哈希函数返回值取模) √键值相同的请求发送给同一台服务器。 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.4.1 键值数据库----键 将键名映射到不重复的相关位置 哈希函数是一种可以接受任意字符串,并能够产生定长字符串的函数。 这些定长字符串为40位长度的16进制数值,一般不会相互重复。 通过键避免重复写入 写入请求平均分配到不同的服务器上(哈希函数返回值取模) 键值相同的请求发送给同一台服务器
3.4.1键值数据库---值 ☒ ■值不一定要有明确的类型,不要求开发者指定值的具体类型 例:与某顾客地址的键相关值的表示形式: 字符串:'1232 NE River Ave,St.Louis,Mo' 列表:{“1232 NE River Ave','Ave,St.Louis',Mo'} Json格式:Street':1232 NE River Ave','City:'Ave,St Louis','State':'Mo'} √不同键值数据库可能会对键、值施加不同的限制 考虑应用程序的需求,权衡各种键值数据库的特性 ■对值进行搜索时的一些限制 所有键值数据库支持:根据键查询、设置、删除相关的值; 部分键值数据库提供额外的扩充功能。未提供功能需要开发者在应用 程序里自行实现。 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.4.1 键值数据库----值 值不一定要有明确的类型,不要求开发者指定值的具体类型 例:与某顾客地址的键相关值的表示形式: 字符串:’1232 NE River Ave,St. Louis,Mo’ 列表: {‘1232 NE River Ave’,’ Ave,St. Louis’,’Mo’} Json格式:{‘Street’:‘1232 NE River Ave’,’City’:’ Ave,St. Louis’,’State’:’Mo’} 不同键值数据库可能会对键、值施加不同的限制 考虑应用程序的需求,权衡各种键值数据库的特性 对值进行搜索时的一些限制 所有键值数据库支持:根据键查询、设置、删除相关的值; 部分键值数据库提供额外的扩充功能。未提供功能需要开发者在应用 程序里自行实现