zoukankan      html  css  js  c++  java
  • 01 键值数据库的基本架构

    本篇重点:通过SimpleKV了解KV数据库的基本架构

    Redis: 键值DB

    从SimpleKV入手学习Redis

    SimpleKV Redis
    数据模型 key:value组成的KV键值对
    key-type: String
    value-type: 基本数据类型(int、double等)
    KV键值对
    value-type: String、哈希表、列表、集合等
    操作接口 PUT/GET/SCAN/DELETE ..
    KV存储位置 内存 内存
    基本组件 访问框架、索引模块、操作模块、存储模块 ..
    访问模式 函数库调用(dll)、网络框架(Socket)
    (RocksDB用函数库调用,Memcached、Redis用网络框架)
    网络框架——“单线程、高性能”
    索引模块 哈希表、B+树、字典等
    (Memcached、Redis用哈希表,RocksDB用跳表)
    哈希表
    持久化功能 文件形式存储内存中的KV AOF、RDB

    Q-A:

    1. KV保存在内/外存的区别?

      内存:优点——读写快,缺点——掉电数据丢失
      外存:优点——避免数据丢失,缺点:慢,速度受限于磁盘

    2. 如何根据不同场景选择KV的存储位置?

      缓存场景:要求快速访问但允许数据偶有丢失——内存

      Memcached/Redis都是内存键值DB

    3. 两种访问模式——函数库调用/网络框架中,网络框架需要考虑的问题?

      a. 网络连接的处理(连接/断开/重连)

      b. 网络请求的解析(接口)

      c. 数据存取的处理(单/多线程,多进程)——IO模型设计

    4. 索引模块:Redis采用哈希表作为索引的原因?

      内存的高性能随机访问特性可以很好匹配哈希表O(1)的操作复杂度

    5. 操作的逻辑步骤

      GET/SCAN: 根据Key返回value值
      PUT/DELETE: a. 新写入/删除KV
            b. 分配/释放内存

    键值数据库SimpleKV的基本架构

    图片来源于极客时间专栏《Redis核心技术与实战》

  • 相关阅读:
    mysql 主从复制原理
    java操作ldap
    ldap数据库--ldapsearch,ldapmodify
    ldap数据库--ODSEE--ACI
    ldap数据库--ODSEE--schema
    ldap数据库--ODSEE--复制协议
    ldap数据库--ODSEE--suffix
    ldap数据库--ODSEE--卸载
    ldap数据库--ODSEE--安装
    WebService--cxf
  • 原文地址:https://www.cnblogs.com/GuoYuying/p/15054041.html
Copyright © 2011-2022 走看看