@lucky_guy228

Пример БД в виде отдельных JSON файлов для C#?

Вопрос заключается в том, что мне нужна база данных, которая не будет хранится одним файлов (как в Sqlite), а в виде кучи файлов json, где отдельная таблица это папка, а запись в таблице это отдельный Json файл. Есть ли для этого готовые решения?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Mi11er
@Mi11er
A human...
Чем вам mongo не угадила ?
Либо можно HarperDB , у нее прям REST APi и можно прямые SQL запросы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
vabka
@vabka
Токсичный шарпист
1. В такой СУБД нет никакого смысла, по тому нет никаких готовых библиотек
2. Реализуется очень просто - ты бы быстрее свой велосипед сделал, чем получил бы ответ здесь.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Лет 15 назад когда я работал в *телекомах мы строили такую систему. Но JSON тогда не использовался. У нас был XML основной формой сериализации данных. Что могу сказать. Проблем с такой системой много. Если с загрузками-выгрузками еще нормально. То с пишущими транзакциями и с конкуренцией - все очень плохо. Файловые системы того времени FAT/NTFS4 плохо реагировали на блокировки и процессы у нас часто висли и их приходилось убивать через таск-менеджер прям на сервере. Позже я для себя пришел к выводу что эффективную БД так пострить невозможно. Нужен WAL на диске, кеш активных страниц и некий координатор блокировок в главном мастер-процессе. Чуть позже я сам для себя узнал что это и есть составные части почти любой современной DBMS.

Тоесть если вы все таки решите делать БД на файлах то это будет либо очень ограниченная и медленная БД. Либо этот проект плавно перерастет в самописную DBMS на "крупных файлах". Если у вас конечно будет энтузиазм расследовать performance issues и улучшать продукт.
Ответ написан
@rPman
Боюсь ты такое странное решение не найдешь готовым

База данных это не сколько хранение - но поиск (и атомарность записи с поддержкой многопоточности). И если хранение реализовывать и не надо (на все по 1-2 строчки кода) то с поиском (индексами) и многопоточностью придется повозиться, и с файлами этим заниматься точно никому не надо.

p.s. Для .net у майкрософта есть набор классов DataSet, практически полноценная in memory база данных, добавляй к нему свой сериализатор (по умолчанию там есть xml дамп, меняющий формат от вересии к версии), по уму делов там не много зато с DataSet через DataBinding все работает из каропки
Ответ написан
@lucky_guy228 Автор вопроса
Ребят! Напишу для всех тех, кому лень читать комментарии. Это не требуется для огромной БД вообще никак, я не собираюсь хранить какие-либо сложные данные таким образом. Это нужно для хранения группы конфигов и чтобы любой разраб(и человек далекий от разработки) мог в своей ветке спокойно добавлять записи в таблицу (в удобном графическом интерфейсе) и не это не вызывало конфликтов, как это могло бы быть с однофайловой бд.
Я получил ответ на свой вопрос, поэтому комментарии по типу "а че зачем" или объяснять мне, как считывать "json" не надо. Давайте не будем токсичными )
Спасибо Denis Melnikov за ответ и mayton2019 за интересный опыт
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы