All Projects → baidu → Tera

baidu / Tera

Licence: other
An Internet-Scale Database.

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
java
68154 projects - #9 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to Tera

Sleekdb
Pure PHP NoSQL database with no dependency. Flat file, JSON based document database.
Stars: ✭ 450 (-75.62%)
Mutual labels:  database, storage, nosql
Aresdb
A GPU-powered real-time analytics storage and query engine.
Stars: ✭ 2,814 (+52.44%)
Mutual labels:  database, data, storage
Unqlite
An Embedded NoSQL, Transactional Database Engine
Stars: ✭ 1,583 (-14.25%)
Mutual labels:  database, storage, nosql
Bojack
🐴 The unreliable key-value store
Stars: ✭ 101 (-94.53%)
Mutual labels:  database, storage, nosql
Gkvdb
[mirror] Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。
Stars: ✭ 109 (-94.1%)
Mutual labels:  database, nosql
Haproxy Configs
80+ HAProxy Configs for Hadoop, Big Data, NoSQL, Docker, Elasticsearch, SolrCloud, HBase, MySQL, PostgreSQL, Apache Drill, Hive, Presto, Impala, Hue, ZooKeeper, SSH, RabbitMQ, Redis, Riak, Cloudera, OpenTSDB, InfluxDB, Prometheus, Kibana, Graphite, Rancher etc.
Stars: ✭ 106 (-94.26%)
Mutual labels:  nosql, hbase
Irmin
Built-in Snapshotting - backup and restore Storage Agnostic - you can use Irmin on top of your own storage layer Custom Datatypes - (de)serialization for custom data types, derivable via ppx_irmin Highly Portable - runs anywhere from Linux to web browsers and Xen unikernels Git Compatibility - irmin-git uses an on-disk format that can be inspected and modified using Git Dynamic Behavior - allows the users to define custom merge functions, use in-memory transactions (to keep track of reads as well as writes) and to define event-driven workflows using a notification mechanism
Stars: ✭ 1,524 (-17.44%)
Mutual labels:  database, storage
Dynein
DynamoDB CLI written in Rust.
Stars: ✭ 126 (-93.17%)
Mutual labels:  database, nosql
Hbase Operator Tools
Apache HBase Operator Tools
Stars: ✭ 104 (-94.37%)
Mutual labels:  database, hbase
Couchbase Lite Ios
Lightweight, embedded, syncable NoSQL database engine for iOS and MacOS apps.
Stars: ✭ 1,532 (-17.01%)
Mutual labels:  database, nosql
Combinefirebase
Combine wrapper on Google's iOS Firebase library.
Stars: ✭ 126 (-93.17%)
Mutual labels:  database, storage
Awesome Bigdata
A curated list of awesome big data frameworks, ressources and other awesomeness.
Stars: ✭ 10,478 (+467.61%)
Mutual labels:  database, data
Ardb
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB.
Stars: ✭ 1,707 (-7.53%)
Mutual labels:  database, nosql
Mhworlddata
Generate a SQLite file from MHW data
Stars: ✭ 110 (-94.04%)
Mutual labels:  database, data
Griddb
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.
Stars: ✭ 1,587 (-14.03%)
Mutual labels:  database, nosql
Databazel
The analytical and reporting solution for MongoDB
Stars: ✭ 118 (-93.61%)
Mutual labels:  database, nosql
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (-93.01%)
Mutual labels:  database, data
Noobaa Core
NooBaa is a Dynamic Data Gateway for cloud-native, hybrid and multi cloud environments ☁️🚀
Stars: ✭ 131 (-92.9%)
Mutual labels:  data, storage
Datastore
🐹 Bloat free and flexible interface for data store and database access.
Stars: ✭ 99 (-94.64%)
Mutual labels:  database, data
Jnosql
Eclipse JNoSQL is a framework which has the goal to help Java developers to create Jakarta EE applications with NoSQL.
Stars: ✭ 145 (-92.15%)
Mutual labels:  database, nosql

Tera - An Internet-Scale Database

Build Status Coverity Scan Build Status Documentation Status

Copyright 2015, Baidu, Inc.

Tera is a high performance distributed NoSQL database, which is inspired by google's BigTable and designed for real-time applications. Tera can easily scale to petabytes of data across thousands of commodity servers. Besides, Tera is widely used in many Baidu products with varied demands,which range from throughput-oriented applications to latency-sensitive service, including web indexing, WebPage DB, LinkBase DB, etc. (中文)

Features

  • Linear and modular scalability
  • Automatic and configurable sharding
  • Ranged and hashed sharding strategies
  • MVCC
  • Column-oriented storage and locality group support
  • Strictly consistent
  • Automatic failover support
  • Online schema change
  • Snapshot support
  • Support RAMDISK/SSD/DFS tiered cache
  • Block cache and Bloom Filters for real-time queries
  • Multi-type table support (RAMDISK/SSD/DISK table)
  • Easy to use C++/Java/Python/REST-ful API

Data model

Tera is the collection of many sparse, distributed, multidimensional tables. The table is indexed by a row key, column key, and a timestamp; each value in the table is an uninterpreted array of bytes.

  • (row:string, (column family+qualifier):string, time:int64) → string

To learn more about the schema, you can refer to BigTable.

Architecture

架构图

Tera has three major components: sdk, master and tablet servers.

  • SDK: a library that is linked into every application client to access Tera cluster.
  • Master: master is responsible for managing tablet servers and tablets, automatic load balance and garbage collection of files in filesystem.
  • Tablet Server: tablet server is the core module in tera, and it uses an enhance Leveldb as a basic storage engine. Tablet server manages a set of tablets, handles read/write/scan requests and schedule tablet split and merge online.

Building blocks

Tera is built on several pieces of open source infrastructure.

  • Filesystem (required)

    Tera uses the distributed file system to store transaction log and data files. So Tera uses an abstract file system interface, called Env, to adapt to different implementations of file systems (e.g., BFS, HDFS, HDFS2, POXIS filesystem).

  • Distributed lock service (required)

    Tera relies on a highly-available and persistent distributed lock service, which is used for a variety of tasks: to ensure that there is at most one active master at any time; to store meta table's location, to discover new tablet server and finalize tablet server deaths. Tera has an adapter class to adapt to different implementations of lock service (e.g., ZooKeeper, Nexus)

  • High performance RPC framework (required)

    Tera is designed to handle a variety of demanding workloads, which range from throughput-oriented applications to latency-sensitive service. So Tera needs a high performance network programming framework. Now Tera heavily relies on Sofa-pbrpc to meet the performance demand.

  • Cluster management system (not necessary)

    A Tera cluster in Baidu typically operates in a shared pool of machines that runs a wide variety of other distributed applications. So Tera can be deployed in a cluster management system Galaxy, which uses for scheduling jobs, managing resources on shared machines, dealing with machine failures, and monitoring machine status. Besides, Tera can also be deployed on RAW machine or in Docker container.

Documents

Quick start

Contributing to Tera

Contributions are welcomed and greatly appreciated.

Read Roadmap to get a general knowledge about our development plan.

See Contributions for more details.

Follow us

To join us, please send resume to tera-user at baidu.com.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].