
Jepsen виявив 96 проблем у версіях ParticleDB від 1.1.4 до 1.1.18
Тест Jepsen бази даних ParticleDB у версіях від 1.1.4 до 1.1.18.11.rc-22 виявив 96 проблем, від збоїв і взаємних блокувань до втрати записів і аномалій ізоляції, попри заяви про повну підтримку ACID.
Jepsen протестував ParticleDB у версіях від 1.1.4 до 1.1.18.11.rc-22 і виявив у базі даних 96 проблем, від збоїв і взаємних блокувань до втрати даних і аномальних результатів запитів. Більшість проблем виникала на справних одновузлових екземплярах з одним клієнтом і без збоїв. До версії 1.1.18.11.rc-22 усі ці проблеми, крім десяти, схоже, були усунені, але ParticleDB і далі втрачала зафіксовані записи під час звичайної роботи з типовим режимом транзакцій occ і дозволяла внутрішні аномалії та Lost Update у режимі serializable, найсильнішому з налаштувань.
Заяви про безпеку і документація
ParticleDB є багатомодельною базою даних для робочих навантажень ШІ, що пропонує транзакційний SQL, сховище ключ-значення, векторний пошук, живу аналітику і визначені користувачем функції під назвою Particles. Вона підтримує протоколи Postgres і Redis, а також API gRPC і HTTP2, і написана мовою Rust. На головній сторінці рекламували Full ACID і доведення TLA+, але під час співпраці специфікація TLA+ не була доступна. Документація також суперечила сама собі щодо режимів синхронізації WAL і режимів транзакцій, а також ігнорувала або відхиляла інструкції SET TRANSACTION ISOLATION LEVEL.
Обсяг тестування
Тести виконувалися на вузлах Debian 13 у контейнерах і віртуальних машинах EC2, з використанням робочих навантажень Jepsen і нових специфічних для ParticleDB робочих навантажень. Стенд міг симулювати збої процесів, втрату записів, які ще не скинуто на диск (fsync), за допомогою LazyFS, а також усічення або пошкодження файлів диска. Були протестовані всі три режими синхронізації WAL і кожен режим транзакцій. Реплікація не охоплювалася, оскільки надані збірки її не підтримували.
Результати
Проблеми включали жахливу продуктивність table-2pl, спонтанні таємничі збої, взаємні блокування, відсутні можливості Postgres, неправильно сформовані відповіді підготовлених запитів, прогалини в автентифікації та помилки предикатів, такі як SELECT, що ігнорував WHERE, повернення рядка для WHERE 4 = 5 і безглузді результати SELECT усередині транзакцій. Відтоді Orkes випустила 1.1.19-rc.13 і стверджує, що вона усуває всі інші проблеми, обговорені у звіті. Це дослідження фінансувала Orkes, Inc.
Джерела: Lobsters
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.