Size: a a a

2021 February 04

RK

Ruslan Khalikov in Tarantool
привет всем! почитал про преимущества тарантул такой вопрос возник - если использовать 2 ссд под тарантул 1 для хранения второй для свопа (мемткс) - есть минусы такого подхода? ссд быстро убивается? надолго хватит? короче если данных на террабайты а охота быстро работать - читал, что алгоритмы тарантула позволяют быстро работать так как не читают из дерева как обычные  sql  базы
источник

ЯШ

Ярослав Шумаков... in Tarantool
Ruslan Khalikov
привет всем! почитал про преимущества тарантул такой вопрос возник - если использовать 2 ссд под тарантул 1 для хранения второй для свопа (мемткс) - есть минусы такого подхода? ссд быстро убивается? надолго хватит? короче если данных на террабайты а охота быстро работать - читал, что алгоритмы тарантула позволяют быстро работать так как не читают из дерева как обычные  sql  базы
swap и Тарантул - почти несовместимы
источник

RK

Ruslan Khalikov in Tarantool
при условии что пишется около 100 миллионов строк по 10 килобайт в год
источник

RK

Ruslan Khalikov in Tarantool
почему своп несовместим с тарантулом? если мы не читаем из дерева а читаем рандом аксес - ссд так работают вроде, преимущества от мемткс будут все таки
источник

ЯШ

Ярослав Шумаков... in Tarantool
Ruslan Khalikov
почему своп несовместим с тарантулом? если мы не читаем из дерева а читаем рандом аксес - ссд так работают вроде, преимущества от мемткс будут все таки
Потому что in-memory
источник

RK

Ruslan Khalikov in Tarantool
swap = заментель памяти
источник

RK

Ruslan Khalikov in Tarantool
своп на ссд
источник

ЯШ

Ярослав Шумаков... in Tarantool
Ruslan Khalikov
swap = заментель памяти
В случае Тарантула - это не так
источник

RK

Ruslan Khalikov in Tarantool
какие препятствия?
источник

ЯШ

Ярослав Шумаков... in Tarantool
Ruslan Khalikov
какие препятствия?
By design
источник

ЯШ

Ярослав Шумаков... in Tarantool
Были эксперименты с Intel Optane, но мне кажется это не ваш случай
источник

ЯШ

Ярослав Шумаков... in Tarantool
Другими словами, если вам нужно разместить 0,5 Тб данных, индексов и т.д. - то у Вас должно быть минимум 0,5Тб*1,5+10% физической RAM
источник

RK

Ruslan Khalikov in Tarantool
intel optane это обычный хдд с большим кешем
источник

RK

Ruslan Khalikov in Tarantool
так что не показатель
источник

RK

Ruslan Khalikov in Tarantool
вроде
источник

ЯШ

Ярослав Шумаков... in Tarantool
Ruslan Khalikov
intel optane это обычный хдд с большим кешем
Нет, я про Optane DC, который в формате DIMM
источник

ЯШ

Ярослав Шумаков... in Tarantool
Просто это будет дороже чем купить памяти, она сейчас же вообще ничего не стоит
источник

D

Denis in Tarantool
Привет,
вопрос по go-tarantool.

Есть тарантул где хранятся сессии пользователей в виде [user_id, session_id, ...]. Есть хранимка которая просто делает return box.space.sessions:get(user_id).

Для декодирования тапла сессии на стороне go есть декодер (сделан по примеру ридми в коннекторе):

func (i *SessionStore) DecodeMsgpack(d *msgpack.Decoder) error {
  l, err := d.DecodeArrayLen()
  if err != nil {
     return err
  }
  if l != 5 {
     return fmt.Errorf("array len doesn't match: %d", l)
  }
...


Проблема в том, что когда тарантул не находит сессии и возвращает nil, я получаю из декодера ошибку типа "array len doesn't match: -1". A хотелось бы "session not found" например.

Я могу это прямо в DecodeMsgpack() добавить, но может правильнее как-то по другому эту ситуацию обрабатывать?
источник

YS

Yura Sokolov in Tarantool
Denis
Привет,
вопрос по go-tarantool.

Есть тарантул где хранятся сессии пользователей в виде [user_id, session_id, ...]. Есть хранимка которая просто делает return box.space.sessions:get(user_id).

Для декодирования тапла сессии на стороне go есть декодер (сделан по примеру ридми в коннекторе):

func (i *SessionStore) DecodeMsgpack(d *msgpack.Decoder) error {
  l, err := d.DecodeArrayLen()
  if err != nil {
     return err
  }
  if l != 5 {
     return fmt.Errorf("array len doesn't match: %d", l)
  }
...


Проблема в том, что когда тарантул не находит сессии и возвращает nil, я получаю из декодера ошибку типа "array len doesn't match: -1". A хотелось бы "session not found" например.

Я могу это прямо в DecodeMsgpack() добавить, но может правильнее как-то по другому эту ситуацию обрабатывать?
а) если хранимка просто делает get, то почему ты просто не делаешь conn.Select ?
b) ты распаковываешь в var ss SessionStore; conn.Call17(..,.. &ss) ? А что если var ss *SessionStore? Тогда, по идее, ss останется nil.
источник

D

Denis in Tarantool
Yura Sokolov
а) если хранимка просто делает get, то почему ты просто не делаешь conn.Select ?
b) ты распаковываешь в var ss SessionStore; conn.Call17(..,.. &ss) ? А что если var ss *SessionStore? Тогда, по идее, ss останется nil.
Там на самом деле между драйвером и кодом сессий ещё самописный враппер, плюс всё писалось разными людьми, поэтому так получилось.
Но в целом понятно, надо просто правильно оформить вызов, спасибо.
источник