Всем привет!

Идея LensDB родилась с простого поста моего друга. Он делился своим опытом создания Shared Memory кэша для своего пет-проекта на C#. В этом посте он написал:

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

Но как только мы с другом обсудили идею, мне в голову пришла более амбициозная мысль: а что если сделать аналог Redis, но с использованием байтов и с максимальной оптимизацией для скорости и производительности? Вместо того, чтобы просто улучшить кэш, я захотел создать полноценную систему для хранения данных с таким же интерфейсом, как у Redis, но с учётом всех преимуществ работы с байтами.

Почему я решил сделать именно так?

После обсуждения с другом, а также на основе собственного опыта работы с данными, я понял, что использование низкоуровневых байтов вместо текстовых форматов, таких как JSON, может дать огромный прирост производительности.

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

Что если можно сделать всё проще? Что если можно обрабатывать данные прямо как бинарные данные, без преобразования в текст и обратно? Это позволило бы:

  • в 30 раз большую скорость, чем Redis, при обработке определённых типов запросов.

  • меньше потребления памяти — данные занимают до 30% меньше места.

  • быстрее сериализация и десериализация данных благодаря использованию MemoryPack и работы с битами, что значительно снижает накладные расходы по сравнению с JSON.

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

Что такое LensDB?

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

Основные особенности LensDB:

  • отказ от JSON и текстовых форматов: работа с данными происходит через сырые байты, что ускоряет операции и сокращает использование памяти

  • максимальная производительность: благодаря использованию MemoryPack и битовой сериализации, процесс сериализации и десериализации ускоряется в несколько раз по сравнению с традиционными подходами

  • простота и интеграция: LensDB сохраняет привычный интерфейс key-value и может быть легко интегрирован в существующие системы, но с гораздо большей производительностью

Почему я выбрал Haskell?

Для реализации LensDB я выбрал Haskell, потому что он идеально подходит для создания надёжных и высокопроизводительных систем. Haskell даёт возможность:

  • писать эффективный и безопасный код с минимальными накладными расходами

  • использовать параллелизм для обработки большого количества запросов одновременно

  • обеспечить максимальную производительность благодаря строгой системе типов и функциональному стилю

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

Что дальше?

Проект LensDB ещё находится на стадии разработки, и я активно работаю над улучшением функционала. Альфа‑версия уже доступна на GitHub, и я буду рад любым предложениям, багрепортам и pull‑request'ам.

Если вы хотите помочь в развитии проекта, пожалуйста, пишите issue или отправляйте PR. Ваши идеи и помощь будут крайне полезны для улучшения и доработки системы.

Ссылку на проект и его исходники можно найти здесь: GitHub.


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

Если вам интересен этот проект, хотите поучаствовать или просто обсудить идеи — буду рад вашим комментариям и предложениям!