Kirlovon / aloedb

Light, Embeddable, NoSQL database for Deno 🦕
https://deno.land/x/aloedb
MIT License
140 stars 12 forks source link

How scalable is this? Can I store million records without losing performance? #10

Closed salemalem closed 3 years ago

salemalem commented 3 years ago

When I connect to db.json file, does it cache it in RAM? I am doing a blog project with Deno and Drash. Can I store millions of posts, perform millions of read, write requests? My blog is small now but once it will go big, I still want to use aloedb for its easy API. How it's different from https://github.com/campvanilla/casualdb/ If it's not scalable to the level of FAANG yet, how can you make it?

I just like the API of AloeDB and want to use this approach in my server. Please, hope you understand.

salemalem commented 3 years ago

Хэй, я заметил что у тебя есть репозиторий на русском языке про КиноПоиск и решил подкреить свои мысли на русском) Я сейчас делаю свой блог на Deno и Drash фрэймуорке. Хочу сохранять туториалы как key:value в json формате. Потому что я с ним очень хорошо знаком и удобней чем писать SQL команды. Увидел твой модуль и casualdb, вижу обе сохраняют в .json файл. Только в Casualdb написано для больших приложений не использовать. Что насчет aloedb? Могу ли я хранить миллион статьей с постоянной нагрузкой на чтение, писание? Могу ли я использовать для своего next-gen Amazon, Yandex, Google уровня приложение?

Знаю что может быть я перенагружаюсь мыслями но все равно хочу запланировать архитектуру.

Kirlovon commented 3 years ago

Привет! AloeDB является встраиваемой базой данных, нацеленной в первую очередь на простоту и удобство использования. Если ты планируешь масштабировать своё приложение, то любая встраиваемая база данных будет плохим выбором. 🙂

По поводу производительности: AloeDB хранит копию всех документов в оперативной памяти. Это повышает скорость поиска, и занимает не так много памяти, как может показаться! (1 миллион небольших документов занимают ~40mb RAM)

При записи, AloeDB сериализует всё хранилище используя JSON.stringify. Это может сильно ударить по производительности, если у тебя хранится миллион документов! (На вскидку, около секунды на запись)

Нормальным объёмом для AloeDB можно считать ~1000 документов, в таком случае проблем точно не будет.

Думаю, на данный момент AloeDB будет производительнее аналогов, но она всё ещё embedded, так что не стоит пробовать заменить ей полноценные базы данных.

salemalem commented 3 years ago

А какая база данных по твоему являеться лучшей для этой цели, по твоему мнению? key:value self hosted db обязательно

salemalem commented 3 years ago

Как ты планируешь дальше развивать Алоэ в будующем?

Kirlovon commented 3 years ago

А какая база данных по твоему являеться лучшей для этой цели, по твоему мнению? key:value self hosted db обязательно

Мне сложно сказать, какая лучше подойдёт для твоей цели, так как все self hosted базы примерно одинаково плохо масштабируются. Redis или MongoDB подойдут куда лучше. 😀

В теории, AloeDB можно использовать для высоко нагруженного блога, но не из коробки. Если писать оптимальные запросы, распределять нагрузку между несколькими серверами и кешировать результаты - тогда AloeDB может подойти. Всё зависит от архитектуры твоего приложения.

Kirlovon commented 3 years ago

Как ты планируешь дальше развивать Алоэ в будующем?

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

Я не планирую добавлять индексинг (На данный момент), или сильно перерабатывать архитектуру базы данных в угоду производительности. Сколько бы я не старался, всё будет упираться в производительность Deno, которая не позволит соревноваться с MongoDB и другими базами.

Надеюсь, такой ответ подойдёт 😁

salemalem commented 3 years ago

Ну что же. Я добавил этот репозиторий на watch и надеюсь твои цели сбудутся. Пока буду пользоваться Алоэ. Удачи! Надеюсь тоже смогу сделать контрибушн чтобы сделать лучше!!! Cheers!