FAQ
GoTable

GoTable <https://github.com/stevejiang/gotable>is a high performance NoSQL
database powered by Go <http://golang.org/> and RocksDB
<http://rocksdb.org/>. It's inspired by BigTable and Redis.
<https://github.com/stevejiang/gotable#features>Features

    - High performance and easy to scale.
    - Powerful set of APIs: GET, SET, DEL, MGET, MSET, MDEL, SCAN, INCR,
    DUMP and "Z" APIs.
    - Data storage is not limited by RAM.
    - Friendly with SSD.
    - Transaction support with CAS (compare and switch).
    - Replication.

API Example

    - Official Go Example
    <https://github.com/stevejiang/gotable/blob/master/cmd/gotable-example/example.go>
    - Official C++ Example
    <https://github.com/stevejiang/gotable/blob/master/api/c++/example.cc>

<https://github.com/stevejiang/gotable#data-model>Data Model

GoTable is constructed with up to 255 DBs, each DB is constructed with up
to 256 Tables. The table structure is like the following chart:
-------------------------------------|-------------------------------------|
Default column space | "Z" sorted score column space |
---------------|---------------|-----|---------------|---------------|-----|
colKey1 | colKey2 | ... | colKey1 | colKey3 | ... |
--------|---------------|---------------|-----|---------------|---------------|-----|
rowKey1 |value11,score11|value12,score12| ... |value13,score13|value14,score14| ... |
--------|---------------|---------------|-----|---------------|---------------|-----|
rowKey2 |value21,score21|value22,score22| ... |value23,score23|value24,score24| ... |
--------|---------------|---------------|-----|---------------|---------------|-----|
   ... | ... | ... |

A table can hold unlimited number of rows(rowKey). Each row can have up to
millions columns(colKey). Data sharding is based on rowKey, records with
the same rowKey are stored in the same unit. So you should carefully
construct rowKey to avoid hot spot issue.
<https://github.com/stevejiang/gotable#default-column-space>Default column
space

In default column space, all colKeys are stored in ASC order. The APIs
GET/SET/DEL/INCR/SCAN take effect in this space. The SCAN API scans records
order by colKey in ASC or DESC order for a rowKey.
<https://github.com/stevejiang/gotable#z-sorted-score-column-space>"Z"
sorted score column space

In "Z" sorted score column space, there are two lists for every rowKey. The
first list is like the default column space, all colKeys are sorted in ASC
order; the second list is order by score, all colKeys are sorted by
"score+colKey" in ASC order. The APIs ZGET/ZSET/ZDEL/ZINCR/ZSCAN take
effect in this space. The SCAN API can scan records on the two lists, order
by colKey or "score+colKey".

*Repository*

https://github.com/stevejiang/gotable


--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

  • Siddon Tang at Apr 1, 2015 at 3:49 pm
    Aha, my project LedisDB is similar like yours. Is it used in production now?


    在 2015年3月31日星期二 UTC+8下午4:35:37,stevejiang写道:
    GoTable

    GoTable <https://github.com/stevejiang/gotable>is a high performance
    NoSQL database powered by Go <http://golang.org/> and RocksDB
    <http://rocksdb.org/>. It's inspired by BigTable and Redis.
    <https://github.com/stevejiang/gotable#features>Features

    - High performance and easy to scale.
    - Powerful set of APIs: GET, SET, DEL, MGET, MSET, MDEL, SCAN, INCR,
    DUMP and "Z" APIs.
    - Data storage is not limited by RAM.
    - Friendly with SSD.
    - Transaction support with CAS (compare and switch).
    - Replication.

    API Example

    - Official Go Example
    <https://github.com/stevejiang/gotable/blob/master/cmd/gotable-example/example.go>
    - Official C++ Example
    <https://github.com/stevejiang/gotable/blob/master/api/c++/example.cc>

    <https://github.com/stevejiang/gotable#data-model>Data Model

    GoTable is constructed with up to 255 DBs, each DB is constructed with up
    to 256 Tables. The table structure is like the following chart:
    -------------------------------------|-------------------------------------|
    Default column space | "Z" sorted score column space |
    ---------------|---------------|-----|---------------|---------------|-----|
    colKey1 | colKey2 | ... | colKey1 | colKey3 | ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    rowKey1 |value11,score11|value12,score12| ... |value13,score13|value14,score14| ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    rowKey2 |value21,score21|value22,score22| ... |value23,score23|value24,score24| ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    ... | ... | ... |

    A table can hold unlimited number of rows(rowKey). Each row can have up to
    millions columns(colKey). Data sharding is based on rowKey, records with
    the same rowKey are stored in the same unit. So you should carefully
    construct rowKey to avoid hot spot issue.
    <https://github.com/stevejiang/gotable#default-column-space>Default
    column space

    In default column space, all colKeys are stored in ASC order. The APIs
    GET/SET/DEL/INCR/SCAN take effect in this space. The SCAN API scans records
    order by colKey in ASC or DESC order for a rowKey.
    <https://github.com/stevejiang/gotable#z-sorted-score-column-space>"Z"
    sorted score column space

    In "Z" sorted score column space, there are two lists for every rowKey.
    The first list is like the default column space, all colKeys are sorted in
    ASC order; the second list is order by score, all colKeys are sorted by
    "score+colKey" in ASC order. The APIs ZGET/ZSET/ZDEL/ZINCR/ZSCAN take
    effect in this space. The SCAN API can scan records on the two lists, order
    by colKey or "score+colKey".

    *Repository*

    https://github.com/stevejiang/gotable

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Stevejiang at Apr 4, 2015 at 12:37 pm
    We're starting to use GoTable in some real world products, probably a month
    later we'll know how well it runs on production.

    LedisDB is a great project! Before I write GoTable, I have spent much time
    on LedisDB source code. Thanks for your great work!

    On Wednesday, April 1, 2015 at 11:49:51 PM UTC+8, Siddon Tang wrote:

    Aha, my project LedisDB is similar like yours. Is it used in production
    now?


    在 2015年3月31日星期二 UTC+8下午4:35:37,stevejiang写道:
    GoTable

    GoTable <https://github.com/stevejiang/gotable>is a high performance
    NoSQL database powered by Go <http://golang.org/> and RocksDB
    <http://rocksdb.org/>. It's inspired by BigTable and Redis.
    <https://github.com/stevejiang/gotable#features>Features

    - High performance and easy to scale.
    - Powerful set of APIs: GET, SET, DEL, MGET, MSET, MDEL, SCAN, INCR,
    DUMP and "Z" APIs.
    - Data storage is not limited by RAM.
    - Friendly with SSD.
    - Transaction support with CAS (compare and switch).
    - Replication.

    API Example

    - Official Go Example
    <https://github.com/stevejiang/gotable/blob/master/cmd/gotable-example/example.go>
    - Official C++ Example
    <https://github.com/stevejiang/gotable/blob/master/api/c++/example.cc>

    <https://github.com/stevejiang/gotable#data-model>Data Model

    GoTable is constructed with up to 255 DBs, each DB is constructed with up
    to 256 Tables. The table structure is like the following chart:
    -------------------------------------|-------------------------------------|
    Default column space | "Z" sorted score column space |
    ---------------|---------------|-----|---------------|---------------|-----|
    colKey1 | colKey2 | ... | colKey1 | colKey3 | ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    rowKey1 |value11,score11|value12,score12| ... |value13,score13|value14,score14| ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    rowKey2 |value21,score21|value22,score22| ... |value23,score23|value24,score24| ... |
    --------|---------------|---------------|-----|---------------|---------------|-----|
    ... | ... | ... |

    A table can hold unlimited number of rows(rowKey). Each row can have up
    to millions columns(colKey). Data sharding is based on rowKey, records with
    the same rowKey are stored in the same unit. So you should carefully
    construct rowKey to avoid hot spot issue.
    <https://github.com/stevejiang/gotable#default-column-space>Default
    column space

    In default column space, all colKeys are stored in ASC order. The APIs
    GET/SET/DEL/INCR/SCAN take effect in this space. The SCAN API scans records
    order by colKey in ASC or DESC order for a rowKey.
    <https://github.com/stevejiang/gotable#z-sorted-score-column-space>"Z"
    sorted score column space

    In "Z" sorted score column space, there are two lists for every rowKey.
    The first list is like the default column space, all colKeys are sorted in
    ASC order; the second list is order by score, all colKeys are sorted by
    "score+colKey" in ASC order. The APIs ZGET/ZSET/ZDEL/ZINCR/ZSCAN take
    effect in this space. The SCAN API can scan records on the two lists, order
    by colKey or "score+colKey".

    *Repository*

    https://github.com/stevejiang/gotable

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupgolang-nuts @
categoriesgo
postedMar 31, '15 at 8:35a
activeApr 4, '15 at 12:37p
posts3
users2
websitegolang.org

2 users in discussion

Stevejiang: 2 posts Siddon Tang: 1 post

People

Translate

site design / logo © 2021 Grokbase