Всем привет!
Идея 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.
Если вам интересен этот проект, хотите поучаствовать или просто обсудить идеи — буду рад вашим комментариям и предложениям!
