关于文章 kv

cache kv python sqlite

python基于sqlite线程安全/进程安全的缓存-有趣儿的脑洞

基于内存中sqlite的缓存系统

Python disk backed cache

说是基于磁盘 实际上再linux上新建一个内存盘 把sqlite文件设置到内存盘中就可以了

安装
pip install diskcache
使用
import diskcache

#设置文件到内存中。=。  速度还不错
cache = diskcache.Cache("/tmp")


#写入缓存
cache.set(
    key="key"
    value="内容",
    expire="过期时间",
    tag="命名空间”
)


#手动清除超过生存时间的缓存
cache.cull()

#清除命名空间的缓存
cache.evict()

号称 Thread-safe and process-safe 经过测试还不错!

kv linux nosql redis

ardb 兼容redis多种储存引擎的好玩轮子

Ardb是一个新的构建在持久化Key/Value存储实现上的NoSQL DB服务实现

Ardb是一个新的构建在持久化Key/Value存储实现上的NoSQL DB服务实现,支持list/set/sorted set/bitset/hash/table等复杂的数据结构,以Redis协议对外提供访问接口。

支持多种储存引擎

git clone https://github.com/yinqiwen/ardb

storage_engine=rocksdb make
storage_engine=leveldb make
storage_engine=lmdb make
storage_engine=wiredtiger make
storage_engine=perconaft make
storage_engine=forestdb make


make dist就可以了

rocksdb facebook基于leveldb的闪存储存引擎

点击下载

leveldb Leveldb是一个google实现的非常高效的kv数据库

点击下载

lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎

点击下载

wiredtiger mongodb的储存引擎

点击下载

perconaft percona公司的轮子 他家优化的各种数据库都挺不错

点击下载

ForestDB 是一个快速的 Key-Value 存储引擎,基于层次B +树单词查找树。由 Couchbase 缓存和存储团队开发。

谁知道什么鬼!! 编译失败了一个!!!!!!

kv linux nosql

myrocks介绍-freeidea

RocksDB为快速而又低延迟的存储设备(例如闪存或者高速硬盘)而特殊优化处理。

MyRocks简介

RocksDB为快速而又低延迟的存储设备(例如闪存或者高速硬盘)而特殊优化处理。 RocksDB将最大限度的发挥闪存和RAM的高度率读写性能。

RocksDB是facebook基于LevelDB实现的,目前为facebook内部大量业务提供服务。经过facebook大量工作,将RocksDB作为MySQL的一个存储引擎移植到MySQL,称之为MyRocks。

RocksDB与innodb的比较

  • innodb空间浪费, B tree分裂导致page内有较多空闲,page利用率不高。innodb现有的压缩效率也不高,压缩以block为单位,也会造成浪费。

  • 写入放大:innodb 更新以页为单位,最坏的情况更新N行会更新N个页。RocksDB append only方式 另外,innodb开启double write也会增加写入。

  • RocksDB对齐开销小:SST file (默认2MB)需要对齐,但远大于4k, RocksDB_block_size(默认4k) 不需要对齐,因此对齐浪费空间较少

  • RocksDB索引前缀相同值压缩存储

  • RocksDB占总数据量90%的最底层数据,行内不需要存储系统列seqid (innodb聚簇索引列包含trxid,roll_ptr等信息)

说了这么多都特么是复制的。。该上干货了。。。这玩意是源码。。还没编译好的。。

myrocks编译

kv mysql newsql nosql sql

TiDB Binary 部署方案详解

TiDB Binary 部署方案详解


title: TiDB Binary 部署方案详解 category: deployment


# TiDB Binary 部署方案

## 概述

一个完整的 TiDB 集群包括 PD,TiKV 以及 TiDB。启动顺序依次是 PD,TiKV 以及 TiDB。

阅读本章前,请先确保阅读 TiDB 整体架构部署建议

快速了解和试用 TiDB,推荐使用单节点方式快速部署

功能性测试 TiDB,推荐使用功能性测试部署

生产环境使用 TiDB,推荐使用多节点集群模式部署

## 下载官方 Binary

### Linux (CentOS 7+, Ubuntu 14.04+)

```bash # 下载压缩包 wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256

# 检查文件完整性,返回 ok 则正确 sha256sum -c tidb-latest-linux-amd64.sha256

# 解开压缩包 tar -xzf tidb-latest-linux-amd64.tar.gz cd tidb-latest-linux-amd64 ``` ### CentOS 6

注意:我们大部分开发和测试都是在 CentOS 7+, Ubuntu 14.04+ 上进行,CentOS 6 上面并没有经过严格测试,所以不推荐在 CentOS 6 上部署 TiDB 集群

```bash # 下载 CentOS6 压缩包 wget http://download.pingcap.org/tidb-latest-linux-amd64-centos6.tar.gz wget http://download.pingcap.org/tidb-latest-linux-amd64-centos6.sha256

# 检查文件完整性,返回 ok 则正确 sha256sum -c tidb-latest-linux-amd64-centos6.sha256

# 解开压缩包 tar -xzf tidb-latest-linux-amd64-centos6.tar.gz cd tidb-latest-linux-amd64-centos6 ```

## 单节点方式快速部署

我们可以在单机上面,运行和测试 TiDB 集群,请按如下步骤依次启动 PD,TiKV,TiDB:

  1. 启动 PD

    bash ./bin/pd-server --data-dir=pd \ --log-file=pd.log

  2. 启动 TiKV

    bash ./bin/tikv-server --pd="127.0.0.1:2379" \ --data-dir=tikv \ --log-file=tikv.log

  3. 启动 TiDB

    bash ./bin/tidb-server --store=tikv \ --path="127.0.0.1:2379" \ --log-file=tidb.log

  4. 使用官方的 mysql 客户端连接 TiDB

    bash mysql -h 127.0.0.1 -P 4000 -u root -D test

## 多节点集群模式部署 在生产环境中,我们推荐多节点部署 TiDB 集群,首先请参考部署建议

这里我们使用六个节点,部署三个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下:

Name Host IP Services
node1 192.168.199.113 PD1, TiDB
node2 192.168.199.114 PD2
node3 192.168.199.115 PD3
node4 192.168.199.116 TiKV1
node5 192.168.199.117 TiKV2
node6 192.168.199.118 TiKV3

请按如下步骤 依次启动 PD 集群,TiKV 集群以及 TiDB:

  1. 在 node1,node2,node3 依次启动 PD

    ```bash ./bin/pd-server --name=pd1 \ --data-dir=pd1 \ --client-urls="http://192.168.199.113:2379" \ --peer-urls="http://192.168.199.113:2380" \ --initial-cluster="pd1=http://192.168.199.113:2380" \ --log-file=pd.log

    ./bin/pd-server --name=pd2 \ --data-dir=pd2 \ --client-urls="http://192.168.199.114:2379" \ --peer-urls="http://192.168.199.114:2380" \ --join="http://192.168.199.113:2379" \ --log-file=pd.log

    ./bin/pd-server --name=pd3 \ --data-dir=pd3 \ --client-urls="http://192.168.199.115:2379" \ --peer-urls="http://192.168.199.115:2380" \ --join="http://192.168.199.113:2379" \ --log-file=pd.log ```

  2. 在 node4,node5,node6 启动 TiKV

    ```bash ./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ --addr="192.168.199.116:20160" \ --data-dir=tikv1 \ --log-file=tikv.log

    ./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ --addr="192.168.199.117:20160" \ --data-dir=tikv2 \ --log-file=tikv.log

    ./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ --addr="192.168.199.118:20160" \ --data-dir=tikv3 \ --log-file=tikv.log ```

  3. 在 node1 启动 TiDB

    bash ./bin/tidb-server --store=tikv \ --path="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ --log-file=tidb.log

  4. 使用官方 mysql 客户端连接 TiDB

    bash mysql -h 192.168.199.113 -P 4000 -u root -D test

注意:在生产环境中启动 TiKV 时,建议使用 --config 参数指定配置文件路径,如果不设置这个参数,TiKV 不会读取配置文件。同样,在生产环境中部署 PD 时,也建议使用 --config 参数指定配置文件路径。

注意:如果使用 nohup 在生产环境中启动集群,需要将启动命令放到一个脚本文件里面执行,否则会出现因为 Shell 退出导致 nohup 启动的进程也收到异常信号退出的问题,具体参考进程异常退出

## 功能性测试部署

如果只是对 TiDB 进行测试,并且机器数量有限,我们可以只启动一台 PD 测试 整个集群。

这里我们使用四个节点,部署一个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下:

Name Host IP Services
node1 192.168.199.113 PD1, TiDB
node2 192.168.199.114 TiKV1
node3 192.168.199.115 TiKV2
node4 192.168.199.116 TiKV3

请按如下步骤 依次启动 PD 集群,TiKV 集群以及 TiDB:

  1. 在 node1 启动 PD

    bash ./bin/pd-server --name=pd1 \ --data-dir=pd1 \ --client-urls="http://192.168.199.113:2379" \ --peer-urls="http://192.168.199.113:2380" \ --initial-cluster="pd1=http://192.168.199.113:2380" \ --log-file=pd.log

  2. 在 node2,node3,node4 启动 TiKV

    ```bash ./bin/tikv-server --pd="192.168.199.113:2379" \ --addr="192.168.199.114:20160" \ --data-dir=tikv1 \ --log-file=tikv.log

    ./bin/tikv-server --pd="192.168.199.113:2379" \ --addr="192.168.199.115:20160" \ --data-dir=tikv2 \ --log-file=tikv.log

    ./bin/tikv-server --pd="192.168.199.113:2379" \ --addr="192.168.199.116:20160" \ --data-dir=tikv3 \ --log-file=tikv.log ```

  3. 在 node1 启动 TiDB

    bash ./bin/tidb-server --store=tikv \ --path="192.168.199.113:2379" \ --log-file=tidb.log

  4. 使用官方 mysql 客户端连接 TiDB

    bash mysql -h 192.168.199.113 -P 4000 -u root -D test