Coder Social home page Coder Social logo

strogo / 1store Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fastio/1store

0.0 2.0 0.0 11.73 MB

NoSQL data store using the SEASTAR framework, compatible with Redis

License: GNU Affero General Public License v3.0

Python 1.94% C++ 96.64% Ragel 0.05% Shell 0.09% CMake 0.04% GAP 0.65% Hack 0.13% Thrift 0.34% Assembly 0.13%

1store's Introduction

Pedis (Parallel Redis) 中文介绍

What's Pedis?

Pedis is the NoSQL data store using the SEASTAR framework, compatible with REDIS. The name of Pedis is an acronym of Parallel redis, which with high throughput and low latency.

Pedis is built on Scylla. Scylla is compatible with Apache Cassandra, which offers developers a dramatically higher-performing and resource effective NoSQL database to power modern and demanding applications.

Pedis Vision

Pedis will rely on the open source community to polish REDIS clusters of ** easy to use **, ** high performance **, ** easy to operate and maintain **.

Pedis data persistence mechanism

Pedis is compatible with REDIS protocol and implements common data structures in Redis 4.0.

By analogy with MYSQL data, in Cylla, key space is equivalent to the database concept in MYSQL, and column family is equivalent to the table concept in MYSQL. Scylla clusters store data in specific keyspaces, specific tables. Therefore, when the Pedis cluster starts, the data that attempts to create keyspaces and tables for storing REDIS data structure. Pedis clusters will be stored in keyspaces called redis, where strings, lists, hashmap, set and Zset data are stored in redis. simple_objects, redis. lists, redis. maps, redis. set and redis. zset tables, respectively.

In addition, Scylla supports data in-memory storage mechanism, that is, data is stored only in memory, not in disk. In this configuration, Pedis data can be stored only in memory and deployed as a cache cluster.

Data Consistency in Pedis Cluster

Scylla supports adjustable data consistency. Through this function, Scylla can achieve strong data consistency, and also can customize the level of read-write consistency. The formula "R + W > N" is often used to describe the implementation of adjustable data consistency. In this formula, R and W are determined by the number of nodes to read and write, respectively, by the level of consistency used. N is the replication factor. The most common way to achieve strong consistency is to use the QUORUM consistency level for reading and writing, which is often defined as a number larger than half of one node.

Therefore, Pedis cluster will also have adjustable data consistency function, which can set different levels of read-write consistency to meet business needs.

Pedis Cluster Data and Scylla Cluster Data Interoperability

The data written through REDIS protocol is stored in a specific keyspace & table in the cluster. The data in keyspace & table can also be read and written through Cassandra protocol. That is to say, data in PEDIS cluster can be accessed either through REDIS protocol or Cassandra protocol. This brings good flexibility to applications.

Planning

At present, the Pedis project needs to complete the following tasks:

  • Support Redis 4.0 protocol (priority support Redis strings, hashmap, set, Zset data structure related protocols);
  • Improve test cases;
  • Publish the first available version;

Getting started

  • git clone [email protected]:fastio/pedis.git
  • git submodule update --init --recursive
  • sudo ./install-dependencies.sh
  • ./configure.py --mode=release --with=pedis
  • ninja-build -j16 # Assuming 16 system threads.
  • build/release/pedis --max-io-requests 1024 --smp 2

1store's People

Contributors

amoskong avatar fastio avatar tracymacding avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.