LINUX.ORG.RU

Встречайте ScyllaDB (переписанную на С++ Apache Cassandra)

 , ,


8

5

На Cassandra Summit, Avi Kivity и Dor Laor (создатели KVM и OSv) объявили о создании ScyllaDB — открытой реализации Apache Cassandra на C++

По утверждению авторов, пропускная способность на ноду у ScyllaDB в 10 раз выше чем у оригинального кода на Java, со временем отклика не превышающим 1мс на 99% запросов.

Они также получили 1 миллион транзакций в секунду на одной ноде.

>>> Подробности

★★☆☆

Проверено: maxcom ()
Последнее исправление: ymn (всего исправлений: 7)

Ответ на: комментарий от shahid

Если нужна вся история изменений, то запили отдельную модель с историей изменений — всё как и везде.

Да но в ней самой будут эти проблемы или вы предлагаете держать ее вне этого чудо хранилища? Если вне то с ростом количества ключей это все становиться бессмысленным, а если внутри то тем более (не говоря о том что мы не можем создать ключ и его историю атомарно в одной транзакции как я смогу это сделать в обычном SQL).

anonymous
()
Ответ на: комментарий от anonymous

как я смогу это сделать в обычном SQL

В RDBMS не бывает split-brain? А мужики-то не знают... Транзакции в wall-log'ах просто облегчат разруливание, сути это не меняет.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 1)
Ответ на: комментарий от shahid

если мы начнем изобратать подобное хранение множества копий ключа то можем столкнуться с тем же, но по крайней мере мы будем иметь транзакции в пределах одного сервера, а так же сможем изобрести несколько стадийные транзакции в пределах нескольких серверов (что уже будут костыли но однако рабочие костыли)

anonymous
()
Ответ на: комментарий от shahid

собственно поделие на SQL с ручным шардингом мы сейчас и используем, но интересуют возможные решения с полу- или автошардингом и без новых странных проблем типа описанных выше

anonymous
()
Ответ на: комментарий от anonymous

Тут у нас получаются плоские костыли, а там у нас будут закруглённые костыли с квадратными ручками.

Fixed.

Решение проблем split-brain — это комплексная задача, очень сильно зависит от обстоятельств, ценности информации и имеющихся ресурсов.

shahid ★★★★★
()
Ответ на: комментарий от anonymous

Идеальных решений не бывает. А проблемы все решаемы. Шардинг с event-consistency требует соответствующих решений со стороны программиста, в т.ч. денормализацию некоторых моделей.

shahid ★★★★★
()
Ответ на: комментарий от shahid

согласен, вот собственно и возникает интерес где и как это возможно решено в самом движке. например на основе сохранения истории изменений в скрытой метаинформации ключа и автоматическом принятии решений по мержу не синхронных ключей.

anonymous
()
Ответ на: комментарий от shahid

но разговоры про рассинхронизацию это случай хранения нескольких копий ключа, а так же интересует база с автошардингом и атомарным изменением ключа (select for update либо CAS) с одной копией ключа (без всех этих спец эффектов).

anonymous
()

пропускная способность на ноду у ScyllaDB в 10 раз выше чем у оригинального кода на Java

Не верю! Это как нужно было тяп ляп писать этот ScyllaDB чтобы скорость увеличилась всего лишь в 10 раз.

anonymous
()
Ответ на: комментарий от anonymous

Автомёржа на уровне elasticsearch не было и не будет. Это практически везде так, т.к. вообще не ясно, как это должно происходить.

В случае наступления split-brain на elasticsearch нужно отказаться от части изменений на части узлов, а потом снова выпавшие ноды подключить к оставшемуся кластеру. (systemctl restart elasticsearch). Всё остальное запиливается на собственное усмотрение.

shahid ★★★★★
()
Ответ на: комментарий от shahid

я спрашиваю вообще не только про cassandra и elasticsearch, возможно есть что-то еще. riak например или еще что-то.

anonymous
()
Ответ на: комментарий от anonymous

riak

Когда тыкал палочкой, там всё было печально в целом.

возможно есть что-то еще

Автоматом оперативно выявлять split-brain, предотвращать возникновение конфликтующих изменений на уровне DNS и nginx, направляя все запросы в какой-то один дата-центр или возвращать клиентам ошибки на время фейловера, ну и т.д.

shahid ★★★★★
()
Ответ на: комментарий от shahid

ну а без многих копий ключа (без split-brain), но с шардингом и атомарным «прочитал ключ, записал ключ»? что самое быстрое и надежное?

anonymous
()
Ответ на: комментарий от shahid

Если нужна масштабируемая NoSQL СУБД с поиском — посмотрите в сторону elasticsearch. Пожалуй, что-то лучше найти сегодня нельзя. Ну или стать бета-тестером сабжа.

elasticsearch сосёт с причмоком на частой записи. И гарантии по консистентности у него на уровне плинтуса. read-your-writes, linearizable reads and writes, eventual consistent counters - нет не слышали. Вообще эластик и кассандра для совсем разных вещей сделаны, их сравнивать некорректно.

migesok
()
Ответ на: комментарий от DiKeert

Кассандра это когда я записываю данные в один data center, а в соседнем через несколько секунд/минут получаю repeatable read-ы этих данных не парясь вообще

В общем случае без paxos - repeatable read никто не гарантирует, сюрприз.

migesok
()
Ответ на: комментарий от anonymous

Числоконцепты

Те жаба годна только для концептов?

Неверный вывод. Скорее «пригодность Java для числодробилок не очевидна». Подавляющее большинство программ никогда не растут до числодробильных объёмов и задач Cassandr'ы.

Camel ★★★★★
()
Ответ на: комментарий от shahid

И чем оно в итоге отличается от elasticsearch? Ну кроме убогой архитектуры, зоопарка равноубогих java-клиентов и кучи by-design косяков. Зато можно перебирать ключи по порядку. Но стоит ли оно того?

Первая проблема, что вспомнил: Эластик не умеет разделять шарды, поэтому масштабирование ограничивается заранее заданным при создании индекса кол-вом шардов. При этом если заранее создать много шардов, то деградирует производительность. Их в идеале должно быть не больше пары-тройки на машину. В итоге эластик машстабируется без пересоздания индексов максимум на начальное кол-во машин * 4.

migesok
()
Ответ на: Числоконцепты от Camel

Для чего тогда она очевидна? Можно любой пример типа программы для создания которой изначально стоит выбрать именно Java а не любой другой инструмент?

anonymous
()

По теме консистентности кассандры и эластика можно глянуть чумовые посты от aphyr:

И вся серия: https://aphyr.com/tags/jepsen

Там этот парень поясняет про модели консистентности, мучает много разных распределённых БД split-brain'ами и проверяет, что становится с данными.

migesok
()
Ответ на: комментарий от EXL

Вопрос, насколько стабильна эта реализация.
C++
стабильность

Pick one. Нет, серьезно, писать серверное ПО на крестах то еще изщвращение, я считаю. ИМХО, на крестах десктопное ПО и игры писать самое то, но никак не сервера.

cherry-pick
()
Ответ на: комментарий от dib2

Быстрота кода зависит по большей части от прокладки между стулом и клавиатурой. JVM умеет в JIT, когда в компилируемых языках/плоатформах тебе надо выбирать между «оптимизировать исполняемый файл под определенный CPU» и «чтобы оно везде работало». Естественно, JVM оверхеад добавляет, особенно по памяти, но на крестах легче набыдлокодить так, что память течь будет.

cherry-pick
()
Ответ на: комментарий от EXL

Вопрос, насколько стабильна эта реализация.

пока только бета, но мужики там с руками, нормальные

shty ★★★★★
()
Ответ на: комментарий от maxcom

Не очень понятно все ли функции поддерживаются.

пока там еще много yet to be implemented

shty ★★★★★
()
Ответ на: комментарий от umren

Странно, что плюсы выбрали.

какие альтернативы предложит благородный дон?

shty ★★★★★
()
Ответ на: комментарий от shahid

Зато можно перебирать ключи по порядку.

можно подумать в ES нельзя ))

shty ★★★★★
()
Ответ на: комментарий от migesok

elasticsearch сосёт с причмоком на частой записи.

ко-ко-ко

И гарантии по консистентности у него на уровне плинтуса.

это есть такое

shty ★★★★★
()
Ответ на: комментарий от migesok

плюсую, отличные посты, всем рекомендуется прочитать, но без фанатизма, задачи там синтетические достаточно

shty ★★★★★
()
Ответ на: комментарий от umren

«CPL.1: Prefer C++ to C» Дальше можно не читать (c) в соседнем топике... Типа они тоже прочитали досюда.

slackwarrior ★★★★★
()
Ответ на: комментарий от migesok

Ну paxos в ней имплементирован и можно включить. Ну и кворум обычно практически означает repeatable read-ы. Все равно, если твоя система распределенна (а с кэсси она распределенна), значит тебе пора биться над тем, что бы она была идемпотентна.

DiKeert ★★
()
Ответ на: комментарий от cherry-pick

о, а вот и диванная самка приблудилась в тред. всем тихо слухать

anonymous
()
Ответ на: комментарий от Nagwal

Интересно, почему на плюсах, а не каком нибудь новомодном Go?

Очевидно потому, что для этой задачи Go подходит хуже, чем C++. Странно, что ты не спросил «почему изначально на Java писали?», но это, видимо, немодный ныне наброс, хотя и на него есть рациональный ответ.

anonymous
()
Ответ на: комментарий от anonymous

Не верю! Это как нужно было тяп ляп писать этот ScyllaDB чтобы скорость увеличилась всего лишь в 10 раз.

В 5 раз быстрее стало из-за сетевого стека в юзерспейсе, ещё в 2 раза - из-за отсутствующих затыков на сборку мусора.

mv ★★★★★
()

Столько народу путают причину и следствие. В посте не было сказано, что код переписан 1к1. Это значит что вся функциональность скорее всего не реализована, а в той, что реализована, могут быть баги, фикс которых может увеличить время выполнения, также были проведены оптимизации известных узких мест. Но нет, зачем думать, лучше кукарекнуть, другие петухи поддержат.

f1xmAn ★★★★★
()
Ответ на: комментарий от cherry-pick

С монгой я работал меньше, чем с тарантулом. А чем мыло.ру не угодили? Я там работал, там очень крутые спецы тусуются, в том числе в отделе разработки тарантула.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от shahid

Даже если сабж будет падать, это уже не так страшно

Да, лишь бы плюсоидам кость кинули

cdshines ★★★★★
()
Ответ на: комментарий от cherry-pick

А с ним-то что не так? Я как раз в нём работал (бэкенд).

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)

открытой реализации Apache Cassandra на C++

И это хорошо.

MrClon ★★★★★
()

Они также получили 1 миллион транзакций в секунду на одной ноде.

Готов поспорить что in-memory дергали парочку ключей

vertexua ★★★★★
()
Ответ на: комментарий от kep

Естественно, что треш будет работать в разы быстрее, если его переписывать

Fixed, это называется редизайн и разработка более современного софта

vertexua ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.