个人理财 管理NoSQL的数据 - 傻瓜

管理NoSQL的数据 - 傻瓜

目录:

视频: NoSQL数据库之Redis数据库管理一Redis的介绍与安装部署 2025

视频: NoSQL数据库之Redis数据库管理一Redis的介绍与安装部署 2025
Anonim

一旦您正确地管理密钥,就可以设计如何使用NoSQL存储数据,并确保其安全且始终可以访问你需要做的。

键值存储中的数据类型

键值存储通常用作“水桶”的二进制数据。一些数据库确实提供了强大的内部数据输入和模式支持。其他人只是简单地在其客户端驱动程序中提供便利的帮助函数,以将公共应用程序数据结构序列化到键值存储。示例包括地图,列表和排序集。

<! Oracle NoSQL可以在两种模式下运行:

简单二进制存储

  • 高度结构化的Avro模式支持

  • Avro模式类似于关系数据库模式 - 执行一个非常严格的集合存储在数据库中的JavaScript对象表示法(JSON)数据的格式规则,如下所示:

{用户名: afowler”的,sessionid:13452673,因为:1408318745,主题:“ldquo; bluesky”}

您可以使用JSON文档定义Avro模式。这是以前显示的存储数据的Avro模式的示例:

{“类型”的:“记录”的,“命名空间”的:“ COM。例如”的,“命名”的:“ UserSession”的,“字段”的:[{“命名”的:“用户名和rdquo;的,“类型”的:[<字符串”的,“空“]},{"命名”的:“的sessionid”的,“类型”的:“ int“},{"命名”的:“因为”的,“类型”的:“很长“},{"命名”的:“主题”的,“类型”的:[<字符串”的,“ null] rdquo;]}]}
当模式很重要时,Avro模式在数据库中提供了非常强的输入。在前面的例子中,你会看到字符串数据,一个数字会话ID,一个日期(自Unix时代以来的毫秒数,作为一个长整数),以及在网站上使用的主题的个性化设置。

另请注意,用户名和主题的类型有两个选项 - string和null,这就是您如何指示Oracle NoSQL允许空值。您可以将主题保留为字符串,并提供了一个额外的配置参数“默认”的:“蓝天”的。其他NoSQL数据库提供具有JSON内容的值的任意属性的二级索引。例如,Riak基于

文档分区提供二级索引

- 基本上,JSON文档中的已知属性使用类型进行索引。这允许范围查询(小于或大于),除了简单的相等和不相等的比较。 Riak设法提供范围查询没有一个严密的模式 - 只是简单的索引定义。如果数据在那里,它将被添加到索引。 复制数据 在其他服务器或服务器上存储相同数据的多个副本有助于确保在一台服务器发生故障时数据的可用性。服务器故障主要发生在同一个群集中。

您可以通过两种主要方式来操作副本:

主从:

所有读取和写入都发生在主设备上。只有主设备出现故障时,从设备才会接收和接收请求。主 - 从复制通常用于兼容ACID的键值存储。为了实现最大一致性,主存储被写入并且在事务完成之前更新所有副本。这种机制称为

  • 两阶段提交 ,并在副本上创建额外的网络和处理时间。 Master-master:

可以在管理密钥的所有节点上进行读写。没有一个“概念”初级”的分区所有者。主 - 主副本通常最终是一致的,集群执行自动操作来确定键的最新值并删除旧的过时值。 在大多数键值存储中,这种情况发生缓慢 - 在读取时间。 Riak在这里是个例外,因为它在正常运行期间有一个反熵服务来检查一致性。 版本控制数据

  • 为了启用自动冲突解决,您需要一种机制来指示最新版本的数据。最终一致的键值存储以不同的方式实现冲突解决。 Riak使用矢量时钟机制来预测哪个副本是最近的副本。其他键值存储使用简单的时间戳来指示过时。当冲突不能自动解决时,两个数据副本都会发送给客户端。在以下情况下发送到客户端的冲突数据可能发生: 客户端1向副本A写入“Adam:{likes:Cheese}”。

副本A将数据复制到副本B.

客户端1将副本A上的数据更新为“亚当:{喜欢:奶酪,讨厌:阳光}”。

此时,副本A没有足够的时间将最新数据复制到副本B.

客户端2将副本B上的数据更新为“亚当:{喜欢:狗,恨:袋鼠}”。

此时,副本A和副本B发生冲突,数据库群集不能自动解决差异。

  1. 另一种机制是使用时间戳并信任它们来指示最新的数据。在这种情况下,应用程序在更新值之前检查时间戳是否读取最新值是常识。

  2. 正在检查

  3. 检查并设置

    机制

  4. 基本上表示

'如果最新版本仍然是版本2,则保存我的版本3'

。此机制有时称为 读取匹配更新(RMU) 或 读取匹配写入(RMW) 。 这个机制是Oracle NoSQL,Redis,Riak和Voldemort使用的默认机制。

管理NoSQL的数据 - 傻瓜

编辑的选择

记录您的思科网络配置与CDP - 傻瓜

记录您的思科网络配置与CDP - 傻瓜

记录思科网络配置有时没有思科发现协议)可能需要花费数小时在布线室跟踪电缆和记录端口。在某些情况下,配线室是一个真正的老鼠的电缆巢,并且可能需要几个小时的导航才能找出哪些交换机连接到哪个交换机,哪些路由器,...

以太网通道诊断信息收集 - 虚拟

以太网通道诊断信息收集 - 虚拟

诊断思科网络中的以太网通道问题,您首先必须能够收集您的交换机及其配置。为了执行这个任务,你一如既往地依靠Show和debug命令。首先,简要介绍一下show命令的内容。 Switch1> enable Switch1#configure terminal Switch2#show EtherChannel ...

扩展访问控制列表(ACL) - 虚拟

扩展访问控制列表(ACL) - 虚拟

扩展访问控制列表(ACL)允许您允许拒绝来自特定IP地址的流量到特定的目标IP地址和端口。它还允许您指定不同类型的流量,如ICMP,TCP,UDP等。不用说,它非常细化,可以使您非常具体。如果...

编辑的选择

电子项目计划步骤1:设想您的电子项目 - 傻瓜

电子项目计划步骤1:设想您的电子项目 - 傻瓜

设计和建立你的电子项目的细节,你应该退后一步,看看大局。首先,你需要确保你有一个坚实的想法为您的项目。你为什么要建立它?它会做什么,谁来使用它,为什么? ...

电子项目计划步骤4:构建您的电路 - 傻瓜

电子项目计划步骤4:构建您的电路 - 傻瓜

而且你对它的操作感到满意,你可以建立一个永久版本的电路。虽然有几种方法可以做到这一点,但最常见的是在印刷电路板(也称为PCB)上构建电路。请注意,在PCB上组装电路...

电子项目计划步骤3:原型电路 - 假人

电子项目计划步骤3:原型电路 - 假人

永久的电路板,你会想确保它的工作。最简单的方法就是在无焊面包板上构建电路。无焊料面包板可以让您快速组装电路元件而不需要焊接任何东西。相反,您只需将其裸露在外...

编辑的选择

如何替换R中的文本 - 虚拟变量

如何替换R中的文本 - 虚拟变量

R中的sub()函数在文本模式,并用替换文本替换此模式。你使用sub()来替代文本文本,并使用其表兄gsub()来替换所有出现的模式。 (gsub()中的g表示全局。)假设你有句子He ...

中如何成功地遵循命名惯例在R - 傻瓜

中如何成功地遵循命名惯例在R - 傻瓜

R是非常自由的,对象和功能。这个自由是一个很大的祝福,同时也是一个很大的负担。没有人不得不遵循严格的规则,所以在R中编程的人基本上可以按照自己的意愿去做。如何选择一个正确的名字...

中使用函数在R中创建并转换脚本后,如何使用R - dummies中的函数

中使用函数在R中创建并转换脚本后,如何使用R - dummies中的函数

再次使用前面显示的Source()命令将其加载到控制台中。现在你看...什么也没有。 R并不让你知道它已经加载了这个函数,但它已经在工作空间中了,你可以检查一下...