键值数据库初探

article/2025/9/16 21:22:57

一. 几个概念

1. 关联数组:和普通数组一样的结构,区别在于没有普通数组一样的约束或者说规范

(1)key(下标)不限于整数,可以是字符串

(2)value可以是实数、字符串、列表及整数等类型

(2)key和value都不要求是同一类型

例子:

键值数据库基于关联数组这一结构构建,但是键值数据库不仅支持内存存储,还支持持久化到硬盘中

 

2.命名空间:由键值对构成的集合,相当于数据库或桶

3.分区:根据键名,把数据分割成不同的单元,存储在集群中的不同服务器上,实现负载均衡

 

二. 键值数据库的特点

1.简洁

用到的只是增加和删除,不需要设计复杂的数据模型、纲要,也不需要为每个属性指定数据类型。动态添加时不需要修改原有数据库的定义

2.高速

把数据不保存在内存中,在RAM中读取和写入速度要快很多,当然也可以选择持久化

因为是存在内存中,有时需要释放来存储新的数据,最常用的算法:LRU(Least Recently Used,最久未使用算法)

3.易于缩放

可缩放性:根据系统负载量,随时添加或删除服务器

缩放的两种方式:

(1)主从式复制

主服务器处理写入请求和读取请求,并把珠吉路的数据复制到集群中的其他服务器里。从服务器只响应读取请求,遵从树形结构

应用情况:希望服务器能快速相应查询请求,而对写入请求响应能力没有太多要求

优点:简洁,其他服务器只需与主服务器通信,而且不用协调写入冲突

缺点:主服务器作为独木桥,一旦故障,整个集群无法处理写入请求(解决:从服务器遵守协议,若主服务器故障,一台从服务器升为主服务器)

  

(2)无主式复制

对于诸如网上购票这种需要大量读取和写入请求的情况,主从不适合,采用无主式复制,它遵从一种环形或网状结构

这种情况下每台服务器都可以吧自己活得新数据复制到其他服务器里面,可以指定哪几台作为它的副本存储服务器。

 

三. 键和值介绍

1.键的定义

 键最好以命名空间为前缀,这样确保了它的唯一性

可以采用实体+标识符+属性的方式,以冒号隔开

如 customer:1:name

 

2.键的定位

在采用无主式复制的集群情况下,如何避免读取和写入不会污染数据?比如订电影票,不同的服务器可能将同一个座位卖给不同的人

 

方法:

由易到难:数字定位用hash函数来定位值(分区键)

数字定位,比如,键为1,那就把它放到第一个服务器里面,由它来负责写入。同理,键为2,由第二个服务器来处理

hash定位:利用之前说的命名空间作为前缀的键,将其做hash运算,得到唯一(绝大多数情况)的定长的hash值。可以利用hash值对服务器数量作取余运算,这样可以将键对应到不同的服务器上执行写操作

 

3.值的介绍

值可以是任何类型,对于值的约束取决于具体使用的kv数据库

 

4.注意

kv数据库只支持根据键查找值,一般不支持查询语言

有的kv数据库提供文本搜索功能,如Riak

 

四.设计

1.键的设计与分区

(1)命名:有具体意义且明确,分隔符的使用(通常是":");如果处理与范围有关,则应把范围标识信息放入键中,比如日期

redis的键名不仅支持字符串,还支持列表、集合、有序集合、hash

(2)分区:可以按键名分区;也可以按hash分区

 

2.值的设计

总的来说,值的设计考虑的是内存读取的时间和空间

有几个原则:

(1)把频繁读取的值组合起来,用一个键名去读取,节省磁盘读取时间

(2)即使对于属于同一个实体的信息(大型的数据结构,嵌套结构等),最好独立出其中读取频繁的属性,节省内存空间


http://chatgpt.dhexx.cn/article/JWllmA4I.shtml

相关文章

键盘键值表

键盘键值表 值 描述 0x1 鼠标左键 0x2 鼠标右键 0x3 CANCEL 键 0x4 鼠标中键 0x8 BACKSPACE 键 0x9 TAB 键 0xC CLEAR 键 0xD ENTER 键 0x10 SHIFT 键 0x11 CTRL 键 0x12 MENU 键 0x13 PAUSE 键 0x14 CAPS LOCK 键 0x1B ESC 键 0x20 SPACEBAR 键 0x21 PAGE UP 键 0x22 PAGE DOW…

sklearn机器学习:岭回归Ridge

在sklearn中,岭回归由线性模型库中的Ridge类来调用: Ridge类的格式 sklearn.linear_model.Ridge (alpha1.0, fit_interceptTrue, normalizeFalse, copy_XTrue, max_iterNone, tol0.001, solver’auto’, random_stateNone) 和线性回归相比,…

Python 中 Ridge 和 Lasso 回归的教程

作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 线性回归和逻辑回归是回归技术中最受欢迎的技术,但是他们一般很难处理大规模数据问题,很难处理过拟合问题。所以,我们一般都会加上一些正则化技…

多元线性回归改进RidgeLasso

多元线性回归改进 – 潘登同学的Machine Learning笔记 文章目录 多元线性回归改进 -- 潘登同学的Machine Learning笔记(简单回顾)多元线性回归模型归一化normalization归一化的方法来个小例子试一试? 正则化regularization正则项 Lasso回归 和 Ridge岭回归L1稀疏L2平…

岭回归(Ridge)不同alpha值对归回结果的影响

对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的…

r ridge回归_手把手带你画高大上的lasso回归模型图

各位芝士好友,今天我们来聊一聊lasso回归算法。与预后有关的文章,传统的做法一般会选择多变量cox回归,高级做法自然就是我们今天的lasso分析。 首先我们先来几篇文献,看一下lasso最近发的两篇文章,如下: 这…

机器学习算法系列(四)- 岭回归算法(Ridge Regression Algorithm)

阅读本文需要的背景知识点:标准线性回归算法、一丢丢编程知识 一、引言 前面一节我们学习了机器学习算法系列(三)- 标准线性回归算法(Standard Linear Regression Algorithm),最后求得标准线性回归的代价函…

手写算法-python代码实现Ridge(L2正则项)回归

手写算法-python代码实现Ridge回归 Ridge简介Ridge回归分析与python代码实现方法一:梯度下降法求解Ridge回归参数方法二:标准方程法实现Ridge回归调用sklearn对比 Ridge简介 前面2篇文章,我们介绍了过拟合与正则化,比较全面的讲了…

线性模型-Ridge-Lasso-回归

目录 1 基本库导入2 线性回归2.1 线性模型性能2.2 使用更高维的数据集 3 岭回归-Ridge3.1 Ridge原理及应用3.2 Ridge调参3.3 为什么要用Ridge 4 Lasso4.1 基本原理及应用4.2 Lasso调参4.3 为什么要用Lasso4.4 Lasso和Ridge的区别(L1,L2区别) …

利用python实现Ridge岭回归和Lasso回归

正则化 regularization 在介绍Ridge和Lasso回归之前,我们先了解一下正则化 过拟合和欠拟合 (1) under fit:还没有拟合到位,训练集和测试集的准确率都还没有到达最高。学的还不 到位。 (2) over fit:拟合过度,训练…

数学推导+纯Python实现机器学习算法14:Ridge岭回归

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 上一节我们讲到预防过拟合方法的Lasso回归模型,也就是基于L1正则化的线性回归。本讲我们继续来看基于L2正则化的线性回归模型。 L2正则化 相较于L0和L1&…

【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)

正则惩罚解决过拟合(Ridge回归和Lasso回归) 案例五: 正则惩罚解决过拟合(Ridge回归和Lasso回归)3.2.1 模块加载与数据读入3.2.2 特征工程3.2.3 模型搭建与应用 手动反爬虫,禁止转载: 原博地址 …

07- 梯度下降优化(Lasso/Ridge/ElasticNet) (数据处理+算法)

归一化: 减少数据不同数量级对预测的影响, 主要是将数据不同属性的数据都降到一个数量级。 最大值最小值归一化:优点是可以把所有数值归一到 0~1 之间,缺点受离群值影响较大。0-均值标准化: 经过处理的数据符合标准正态分布,即均值为0,标准差…

Linear Regression:Ridge regression

Ridge regression:岭回归 与least-squares method (最小二乘法)相似,只是加了一个对输入数据权重的惩罚值, 这个惩罚参数称为regularization (正则化)。正则化降低模型的复杂度,防止模型的过度拟合。 Ridge regression 利用L2 regularizatio…

对Lasso可以做特征选择,而Ridge却不行的详细解释

为了限制模型参数的数值大小,就在模型原来的目标函数上加上一个惩罚项,这个过程叫做正则化(Regularization)。 如果惩罚项是参数的 l 2 l_2 l2​范数,就是岭回归(Ridge Regression)如果惩罚项是参数的 l 1 l_1 l1​范…

Kernel Ridge Regression 详解过程

Kernel Ridge Regression(KRR,核脊回归) 是Ridge Regression(RR,脊回归)的kernel版本,与Support Vector Regression(SVR,支持向量回归)类似。所以,在这里,我们先大致了解RR的来源,由此引入KRR&a…

sklearn-1.1.2.Ridge Regression

1.1.2 Ridge Regression Ridge回归通过对系数的惩罚值来解决最小二乘法的系数问题。岭系数的最小化惩罚残差平方和的公式: 这里,是用来控制收缩量的复杂参数:参数值越大,收缩量也越大,因此系数对共线性变得更加稳健。 …

Ridge回归

岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,自变量之间线性相关-correlation很高,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失…

Lasso 和 Ridge回归中的超参数调整技巧

在这篇文章中,我们将首先看看Lasso和Ridge回归中一些常见的错误,然后我将描述我通常采取的步骤来优化超参数。代码是用Python编写的,我们主要依赖scikit-learn。本文章主要关注Lasso的例子,但其基本理论与Ridge非常相似。 起初&a…

Ridge和Lasso回归

上周看了看回归方面的知识,顺便复(xue)习一下Ridge(岭回归)和Lasso回归(套索回归)。瞅到了一篇英文博客讲得不错,翻译一下 本文翻译自 Ridge and Lasso Regression 本文是一篇Josh …