2015-11-02 25 views
2

我在理解cassandra爲每種列類型提供的代碼系統時遇到問題。 我使用的Node.js驅動器(「卡桑德拉驅動器」)和我使用client.metadata.getTable來檢索元數據信息:列類型的Cassandra代碼?

client.metadata.getTable('dev', 'artists', function (err, table) { 
    if (!err) { 
     table.columns.forEach(function (column) { 
      console.log(column); 
     }); 
    } 
}); 

實施例列結果:

{ name: 'genre', 
    type: 
    { code: 13, 
    info: null, 
    options: { reversed: false, frozen: false } } } 

當我創建的表,我設置'流派'爲varchar(所以我猜13 = varchar)。我試圖理解的是所有代碼號碼和他們的類型之間的連接,沒有猜測。我在文檔和在線上都沒有發現關於此主題的任何內容。 有什麼想法?

回答

2

看一看的NodeJS驅動器/ lib目錄/類型/ index.js(Node.js sources on gitHub

var dataTypes = { 
    custom:  0x0000, 
    ascii:  0x0001, 
    bigint:  0x0002, 
    blob:  0x0003, 
    boolean: 0x0004, 
    counter: 0x0005, 
    decimal: 0x0006, 
    double:  0x0007, 
    float:  0x0008, 
    int:  0x0009, 
    text:  0x000a, 
    timestamp: 0x000b, 
    uuid:  0x000c, 
    varchar: 0x000d, 
    varint:  0x000e, 
    timeuuid: 0x000f, 
    inet:  0x0010, 
    date:  0x0011, 
    time:  0x0012, 
    smallint: 0x0013, 
    tinyint: 0x0014, 
    list:  0x0020, 
    map:  0x0021, 
    set:  0x0022, 
    udt:  0x0030, 
    tuple:  0x0031, 

所以,你猜對了,13等於VARCHAR。

編輯 這些值是十六進制表示。例如varchar 0x000d(十六進制)等於13(十進制)。但實際上我不知道他們爲什麼在這裏使用十六進制而不是十進制。基本上他們使用自定義的值:0(dec)到元組:25(dec)來定義這些類型。

谷歌計算器可以幫助你在十六進制和十進制之間的轉換。例如:https://www.google.de/#q=0x000d+to+decimal

+0

謝謝!但這些價值的含義是什麼?是那種十六進制值? –

+0

是的,它們是十六進制的。我編輯了我的評論。不幸的是,我不能給你一個解釋,爲什麼他們使用十六進制而不是dec – HashtagMarkus

+0

好酷。謝謝! –