调用选择Tarantool分片

时间:2018-03-21 08:01:28

标签: nosql sharding tarantool

我有一个带有分片模块和空间配置的Tarantool,如下所示:

local h_box = box.schema.create_space('hotbox')
h_box:create_index('one', {type = 'hash', parts = {1, 'string'}})
h_box:create_index('two', {type = 'tree', parts = {2, 'string'}})
h_box:create_index('three', {type = 'tree', parts = {3, 'unsigned'}})
h_box:create_index('four', {type = 'tree', parts = {4, 'boolean'}})
h_box:create_index('five', {type = 'tree', parts = {5, 'unsigned'}})
h_box:create_index('six', {type = 'tree', parts = {6, 'boolean'}})

Tarantool shard module documentation说:

  

shard.T:选择没有主键的{}请求将搜索所有分片。

但是当我尝试这个时,我看到了错误。

shard.h_box:select{}
---
- error: 'builtin/digest.lua:138: Usage digest.crc32(string)'
...

当我打电话给shard.h_box:secondary_select{2, {limit = 10}, 'foo'}时,Tarantool会抛出错误:

---
- error: '/usr/share/tarantool/shard/init.lua:1015: attempt to index field ''conn''
    (a nil value)'
...

如何从所有分片中获取所有数据并将选择调用到辅助索引?

1 个答案:

答案 0 :(得分:1)

没有主键无法执行

df.iloc[:,0:10].corr()。我向文档团队提出了#574

关于shard.T:select()

  1. 似乎与至少一个存储器的连接已断开。值得看看前tarantool的日志文件(使用分片模块)。

  2. 以防万一,值得检查一下是否可以连接到存储并使用net.box与指定的用户从空间中进行选择。

  3. 使用括号代替大括号(该函数接受多个参数,而不是单个表)。

  4. 您正在使用shard模块的e75d2c7a版本,但尝试使用更新版本的API。例如,对e75d2c7a的正确请求为secondary_select。或者尝试更新到最新的分片版本。

  5. 索引从零开始计数,因此您尝试通过“ string”键使用“ unsigned”索引“ 3”(顺便说一下,shard.space_name:secondary_select(index_no_or_name, index_key, opts)允许使用索引名称)。

  6. secondary_select设置为2,但是存储计数为奇数。最后一个将不使用。

希望有帮助。