powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Локальная (embedded) БД для изменяющихся данных
17 сообщений из 17, страница 1 из 1
Локальная (embedded) БД для изменяющихся данных
    #39944373
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно сейчас данные лежат просто в json-файлах в папке рядом с приложением. Это как минимум ненадёжно и тяжело поддерживать.
Хочется перевести хранение в какую-нибудь embedded базу и заодно может кто подскажет получше способ хранения данных.

Данные можно представить в виде дерева.
Допустим, это город, у него есть улицы, у улиц дома, у домов помещения.

Набор хранимых данных у всех городов/улиц/... здесь и сейчас одинаков, но периодически туда что-то добавляется и/или удаляется.
Не требуется такого, что вот у этого города хранится численность населения, а у этого - нет. Устроит, что любой атрибут есть у всех или ни у кого.

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

Пока в мыслях схема таблиц грубо такая:
Город (ИД, Наименование, Данные)
Улица (ИД, Наименование, ГородИД, Данные)
Дом (ИД, УлицаИД, Данные)

Данные - либо какая-нибудь BLOB/текстовая колонка для хранения того же json со всем подряд, либо ИД в отдельной таблице для всех таких данных.
Пока для помещений никаких выборок не нужно, поэтому они могут единым куском лежать в данных дома. Если потребуется, то в БД добавится еще одна таблица для помещений. Соответственно численность населения города лежит в данных города, но если понадобится какой-то отбор по ней, то нужно будет добавить колонку и в программе обновить схему с переносом данных в неё.
Добавление/удаление колонок и таблиц - это что-то сильно редкое и не факт, что вообще понадобится, но нужно предусмотреть. основная же часть периодически переделывается. Где-то типы данных меняются (например, было дробное значение в километрах, а стало целое в метрах), где-то типа как с населением - было одно значение, а стала коллекция по годам и т.п.

Вроде под такую вещь должно хорошо подойти что-то из nosql, но нашёл только LiteDB, который вроде как не очень известен и непонятно что там с надёжностью и т.п.
Пока ковыряю SQLite, т.к. в принципе альтернатив из-за требования embedded не вижу, но может кто чего еще посоветует, а то на файлах велосипедить тоже как-то не хочется.
Сейчас объёмы на json-файлах - что-то в районе 5 ГБ, зависит от конкретного пользователя. С программой из коробки 1 гигабайт идёт, а дальше кто сколько нагенерирует.
Если важно, то разработка под .NET FW 4.5.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944385
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КарбофосЭто как минимум ненадёжно и тяжело поддерживать.

Разве? Какие проблемы с этим?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944398
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

КарбофосЭто как минимум ненадёжно и тяжело поддерживать.

Разве? Какие проблемы с этим?

ну, там больше проблема в текущей реализации. Нет никакого контроля за тем, что файл вообще записался, никак не обрабатывается ситуация, когда компьютер внезапно отключился или кончилось место на диске. По сути надёжность зависит от везения сейчас и в любой момент можно из-за любого чиха потерять файл-другой.
Сложность поддержки по сути в том, что нужно изначально костыльный код поддерживать, это даже морально тяжело )))
О том, чтобы реализовать нормально всё на файлах с переработкой структуры хранения, тоже думаю, но как-то не очень хочется так велосипедить и свой nosql создавать.
С другой стороны пока и SQLite не так, чтобы мне здесь нравился.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944402
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карбофос
Нет никакого контроля за тем, что файл вообще записался, никак не обрабатывается ситуация, когда компьютер внезапно отключился или кончилось место на диске.

А разве есть такие локальные СУБД, которые гарантируют сохранность при отключении компа или недостатке места на диске?
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944404
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъесть такие локальные СУБД, которые гарантируют

Нет. И нелокальных тоже нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944419
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карбофос,

используй, конечно же, Firebird embedded.

В отличии от SQLite, позволяет одновременную ("параллельную") запись из разных приложений в один файл базы.
У нас есть вариант применения: в качестве хранения локльных данных комплекса приложений, вместо реестра Windows. В том числе и для использования приложений "на флешках". Флешкарточки, конечно, не очень надежны сами по себе (и медленные), но вот у нас десятки тысяч клиентов используют эту схему, и ни разу никто не жаловался.
Да, на всякий случай, если файл базы грохнется, мы прилагаем файл базы - пустышки. Вроде не понадобилось.
А клиенты у нас - так себе в плане аккуратности. Т.е., довольно надежная СУБД.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944459
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ, ну, не так, чтобы гарантируют прямо, но даже в том же SQLite есть режим журнала, который хоть от базовых сбоев спасти должен.
Firebird мне казался для этой задачи практически как из пушки по воробьям (много ненужного функционала, который скорее всего только увеличит время обработки, а пользы не принесёт), но пожалуй тоже нужно посмотреть, т.к. выбор не велик. Только когда я его в последний раз видел, в embedded версии он не умел одновременную работу из разных процессов, хотя здесь это и не нужно.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944508
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас было упомянуто про деревья....
http://www.minimdb.com/minimono.html
и автор доступен
"ну я"
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944519
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карбофосдаже в том же SQLite есть режим журнала, который хоть от базовых сбоев спасти должен.

И в какое место оно запишет этот журнал если место на диске кончилось?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944525
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Карбофос, вчера, 20:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1324126&msg=22112022][22112022]
>...Если важно, то разработка под .NET FW 4.5.
<
Может быть в этом случае имеет смысл заценить это .
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39944724
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
звучит как классическая задача под solr или elasticsearch индекс. solr помню можно было как embedded запускать
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39945044
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
experience
У вас было упомянуто про деревья....
http://www.minimdb.com/minimono.html
и автор доступен
"ну я"


Под это дело есть интерфейс через Excel
Подробности на www.armex.pro
Скачать https://github.com/mx-alex/MX
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39945818
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Карбофосдаже в том же SQLite есть режим журнала, который хоть от базовых сбоев спасти должен.

И в какое место оно запишет этот журнал если место на диске кончилось?..

Главное - чтобы не сломалась БД из-за этого. Я надеюсь, что SQLite именно так и поступает.
То, что текущая запись не уместилась/не успела записаться - это нормально.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39945823
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ответившим, посмотрю позже что и как. Только не очень понимаю чем эластик тут должен помочь.
Пока успел посмотреть только sqlite и firebird. Если данные сильно разбивать, то выглядят неплохо, но в текущих реалиях неделимые блоки данных больше 50 мегабайт и скорость работы с ними сильно проигрывает хранению в отдельном файле.
Пока задачу отложили, буду потом еще думать. Или буду стараться еще разбить данные, чтобы не было необходимости хранить в одной ячейке такие объёмы или же использовать БД для индексов, а хранить большие данные в файлах.
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39945828
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и текстовый файлик не сломается, если его не перезаписывать, а создавать новый с
последующим переименованием.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39946027
Карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Ну так и текстовый файлик не сломается, если его не перезаписывать, а создавать новый с
последующим переименованием.

Не хотелось это делать вручную просто
...
Рейтинг: 0 / 0
Локальная (embedded) БД для изменяющихся данных
    #39947958
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карбофос
Собственно сейчас данные лежат просто в json-файлах в папке рядом с приложением. Это как минимум ненадёжно и тяжело поддерживать.
Хочется перевести хранение в какую-нибудь embedded базу и заодно может кто подскажет получше способ хранения данных.

Не факт что тебе станет легче поддерживать. Может json в исходниках как конфигурационные файлы это и не плохо.

Сразу сходу замечание.

Вот эта схема - обычно не выдерживает испытание временем.
Код: sql
1.
2.
3.
Город (ИД, Наименование, Данные)
Улица (ИД, Наименование, ГородИД, Данные)
Дом (ИД, УлицаИД, Данные)



Все кто строили гео-классификаторы или базы адресов приходят к одному и тому-же выводу.
Адреса - это иерархическая система. И на 1 уровне иерархии вполне может быть улица дом и переулок
и ПГТ и площадь.

Вобщем суть басни такова. Пока у тебя маленькая база (город). Все нормально. Но если проект
развивать в область или в регион то ты неизбежно зацепишь такие данные которые не ложатся
в такую структуру.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Локальная (embedded) БД для изменяющихся данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (5), Bing Bot, Yandex Bot 1 мин., CerebroSQL 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]