Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add shard group support #44

Closed
denisb0 opened this issue Oct 6, 2020 · 2 comments · Fixed by #319
Closed

Add shard group support #44

denisb0 opened this issue Oct 6, 2020 · 2 comments · Fixed by #319
Assignees
Labels
feature A new functionality

Comments

@denisb0
Copy link

denisb0 commented Oct 6, 2020

If there's custom shard group defined, operations will break at code like vshard.router.routeall().
It could be fixed by passing shard group name in opts argument and using first group in list if it's not provided/not found.

@LeonidVas LeonidVas added feature A new functionality teamE labels Dec 23, 2021
@Totktonada
Copy link
Member

Vshard group is Cartridge's term. Vshard itself only allows to create several vshard router objects. See also:

My proposal:

  • Add vshard_router parameter (accepts vshard router object).
  • Add vshard_group parameter (enabled only if crud-router role is started, accepts a vshard group name).

@Totktonada
Copy link
Member

I'm not right: routers are named in vshard (see the documentation). So we can accept router object and name both in the vshard_router parameter.

@LeonidVas LeonidVas assigned DifferentialOrange and unassigned vr009 Aug 4, 2022
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 16, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 17, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 17, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 17, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

Test runs have shown that this patch do not affects the performance of
crud requests.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 17, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
This patch is the groundwork for vshard groups and custom routers
support.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, sharding schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, vshard router object is retrieved only in the single
point of a request. (Except for name resolving in statistics.)

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 19, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 26, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, sharding schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, vshard router object is retrieved only in the single
point of a request. (Except for name resolving in statistics.)

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, sharding schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, vshard router object is retrieved only in the single
point of a request. (Except for name resolving in statistics.)

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, sharding schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, vshard router object is retrieved only in the single
point of a request. (Except for name resolving in statistics.)

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 29, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
This patch is the groundwork for vshard groups and custom routers
support.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, sharding schema reload works per vshard router object.

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
This patch is the groundwork for vshard groups and custom routers
support.

After this patch, vshard router object is retrieved only in the single
point of a request. (Except for name resolving in statistics.)

Test runs have shown that this patch do not affects the performance of
crud requests.

Part of #44
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
This patch adds Cartridge vshard groups [1] and non-default vshard
router [2] support to CRUD operations.

To specify Cartridge vshard group, pass vshard group name with
`vshard_router` option of a crud operation.
```lua
crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = 'customers'})
```

To use non-default vshard router, pass vshard router object with
`vshard_router` option of a crud operation.
```lua
local router = vshard.router.new(cfg)

crud.select('customers_ddl',
            {{'=', 'age', 41}},
            {vshard_router = router})
```

If `vshard_router` is not specified, default vshard router is used to
process the request. If default vshard router is not found (for example,
if it is a Cartridge application with vshard groups) and option is not
specified, the error is returned.

1. https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_dev/#using-multiple-vshard-storage-groups
2. https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_router/#router-api-new

Closes #44
DifferentialOrange added a commit that referenced this issue Aug 31, 2022
CRUD stats are separated by space name. If space id is passed instead of
name (only `crud.len` allows this), space name is resolved with net_box
schema. Since, after resolving #44, non-default vshard routers and
Cartridge vshard groups are supported, to resolve the name we must know
what vshard router should be used. Since using space id for `crud.len`
is deprecated now, we won't support name resolve for operations with
custom router statistics. Instead of this, a warning will be logged.
`crud.len` statistics will be signed by space name or space id casted to
string depending on is there a default router with space schema or not.

Follows up #44, part of #255
DifferentialOrange added a commit that referenced this issue Sep 13, 2022
Overview

  This release introduces vshard group and non-default vshard routers
  support.

  To use a space Cartridge vshard group, pass group name to a request
  a `vshard_group` request option.

  ```lua
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = 'hot'})
  ```

  To use non-default vshard router, pass router object to a request.

  ```lua
  local vshard_router = vshard.router.new(name, cfg)
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = vshard_router})
  ```

New features

  * vshard group and non-default vshard routers support (#44).

Changes

  * Deprecate using space id in crud.len (#255).
DifferentialOrange added a commit that referenced this issue Sep 13, 2022
Overview

  This release introduces vshard group and non-default vshard routers
  support.

  To use a space Cartridge vshard group, pass group name to a request
  `vshard_group` option.

  ```lua
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = 'hot'})
  ```

  To use non-default vshard router, pass router object to a request.

  ```lua
  local vshard_router = vshard.router.new(name, cfg)
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = vshard_router})
  ```

New features

  * vshard group and non-default vshard routers support (#44).

Changes

  * Deprecate using space id in crud.len (#255).
DifferentialOrange added a commit that referenced this issue Sep 14, 2022
Overview

  This release introduces vshard group and non-default vshard routers
  support.

  To use a space Cartridge vshard group, pass group name to a request
  `vshard_group` option.

  ```lua
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = 'hot'})
  ```

  To use non-default vshard router, pass router object to a request
  `vshard_group` option.

  ```lua
  local my_router = vshard.router.new(name, cfg)
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = my_router})
  ```

New features

  * vshard group and non-default vshard routers support (#44).

Changes

  * Deprecate using space id in crud.len (#255).
DifferentialOrange added a commit that referenced this issue Sep 14, 2022
Overview

  This release introduces vshard group and non-default vshard routers
  support.

  To use a space Cartridge vshard group, pass group name to a request
  `vshard_group` option.

  ```lua
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = 'hot'})
  ```

  To use non-default vshard router, pass router object to a request
  `vshard_group` option.

  ```lua
  local my_router = vshard.router.new(name, cfg)
  local res, err = crud.select('customers',
                               {{'<=', 'age', 35}},
                               {first = 10, vshard_group = my_router})
  ```

New features

  * vshard group and non-default vshard routers support (#44).

Changes

  * Deprecate using space id in crud.len (#255).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature A new functionality
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants