библиотека для структурированного хранения данных в файлах
От: anatoly1  
Дата: 06.09.14 09:01
Оценка:
Суть такая: нужна либа для следующей задачи:
Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?
Формат файла (xml, json или что-нибудь другое) безразличен.
Отредактировано 06.09.2014 9:02 anatoly1 . Предыдущая версия .
Re: SQLite
От: Qbit86 Кипр
Дата: 06.09.14 13:03
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?

A>Формат файла (xml, json или что-нибудь другое) безразличен.

Описанное вроде попадает под сценарии использования SQLite: «SQLite is not designed to compete with Oracle. SQLite is designed to compete with fopen().»

A>Отредактировано 06.09.2014 13:02 anatoly1 . Предыдущая версия .


На RSDN появилось редактирование, штоле?
Глаза у меня добрые, но рубашка — смирительная!
Отредактировано 06.09.2014 13:05 Qbit86 . Предыдущая версия .
Re[2]: SQLite
От: anatoly1  
Дата: 06.09.14 13:33
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Описанное вроде попадает под сценарии использования SQLite: «SQLite is not designed to compete with Oracle. SQLite is designed to compete with fopen().»


Как-то тащить БД ради такой простой задачи не очень хочется. Тем более что sql-я никакого не надо.
Re[3]: SQLite
От: Stanislav V. Zudin Россия  
Дата: 06.09.14 14:39
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

Q>>Описанное вроде попадает под сценарии использования SQLite: «SQLite is not designed to compete with Oracle. SQLite is designed to compete with fopen().»


A>Как-то тащить БД ради такой простой задачи не очень хочется. Тем более что sql-я никакого не надо.


Это всего один сишный файл.
SQLite уже давно занял нишу композитных файлов, благо накладных расходов — минимум, а полезностей — масса. Та же версионность...
В общем, поддерживаю QBit'а.
_____________________
С уважением,
Stanislav V. Zudin
Re: библиотека для структурированного хранения данных в файлах
От: PM  
Дата: 06.09.14 15:07
Оценка: 2 (1)
Здравствуйте, anatoly1,

Добавлю, что кроме уже упомянутой SQLite, можно также посмотреть в сторону модных теперь key-value storage, например LMDB
Re[3]: СУБД
От: Qbit86 Кипр
Дата: 06.09.14 15:38
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Как-то тащить БД ради такой простой задачи не очень хочется.


Это БД практически без СУБД. Тут нет абсолютно ничего лишнего по сравнению с другими решениями, что нужно было бы тащить.

A>Тем более что sql-я никакого не надо.


Там всего SQL'я-то — создание, чтение, добавление, удаление. Выучить четыре SQL-команды не сложнее, чем выучить эти же четыре функции в нестандартном API какой-то альтернативной библиотеки.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: SQLite
От: Anton Batenev Россия https://github.com/abbat
Дата: 06.09.14 18:30
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

a> Как-то тащить БД ради такой простой задачи не очень хочется. Тем более что sql-я никакого не надо.


Есть еще Embedded JSON Database engine — она no sql
avalon/1.0.435
Re: библиотека для структурированного хранения данных в файлах
От: Pavel Dvorkin Россия  
Дата: 07.09.14 10:36
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Суть такая: нужна либа для следующей задачи:

A>Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?
A>Формат файла (xml, json или что-нибудь другое) безразличен.

Если под Windows, то можно использовать INI-файлы, хотя они и устарели. Разумеется, если размер файла небольшой.
With best regards
Pavel Dvorkin
Re: библиотека для структурированного хранения данных в файлах
От: BulatZiganshin  
Дата: 08.09.14 05:59
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?


размер данных какой? если это килобайты, то может быть проще перезаписывать всё разом. диску вообще всё равно, время тратишь только на сериализацию
Люди, я люблю вас! Будьте бдительны!!!
Re: библиотека для структурированного хранения данных в файлах
От: Chorkov Россия  
Дата: 08.09.14 08:06
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Суть такая: нужна либа для следующей задачи:

A>Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?
A>Формат файла (xml, json или что-нибудь другое) безразличен.

Если у тебя задача минимизировать оверхед записи файлов, можно посмотреть в сторону memory-mapped-files.
С точки зрения сторонних программ — файл будет записан на диск, хотя реально данные на диске окажутся позже, как ОС решит.
С точки зрения восстановления после падения программы — тоже все хорошо.
Re: библиотека для структурированного хранения данных в файлах
От: Rinbe Россия  
Дата: 08.09.14 08:11
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

A>Суть такая: нужна либа для следующей задачи:

A>Есть определённый набор полей, которые периодически изменяются и которые необходимо при каждом изменении перезаписывать в файле. Так вот, есть ли библиотека, которая презаписывает измененные поля, не затрагивая остальной файл (т.е. попросту говоря, не переписывает остальные поля заново, выполняя бессмысленную работу) ?
A>Формат файла (xml, json или что-нибудь другое) безразличен.

db4objects — использовать проще простого, если не нравится sql.
Re[2]: библиотека для структурированного хранения данных в файлах
От: anatoly1  
Дата: 08.09.14 09:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Если под Windows, то можно использовать INI-файлы, хотя они и устарели. Разумеется, если размер файла небольшой.


Не нашёл подходящих библиотек для работы с ini-файлами.
Но я уже потом понял, что для точечной работы с файлами нужен бинарный формат.
Re[2]: библиотека для структурированного хранения данных в файлах
От: anatoly1  
Дата: 08.09.14 09:35
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>размер данных какой? если это килобайты, то может быть проще перезаписывать всё разом. диску вообще всё равно, время тратишь только на сериализацию


Да в пределах килобайта. Но там нужна частая перезапись плюс поддержка консистентности, т.е. постоянный вызов flush.
Re[2]: библиотека для структурированного хранения данных в файлах
От: anatoly1  
Дата: 08.09.14 09:35
Оценка:
Здравствуйте, Rinbe, Вы писали:

R>db4objects — использовать проще простого, если не нравится sql.


Ничего не имю против sql. Просто тащить его, поскольку он не нужен, считаю лишним.
Ну и под линукс надо
Re[3]: библиотека для структурированного хранения данных в файлах
От: BulatZiganshin  
Дата: 08.09.14 10:05
Оценка:
Здравствуйте, anatoly1, Вы писали:

A>Да в пределах килобайта. Но там нужна частая перезапись плюс поддержка консистентности, т.е. постоянный вызов flush.


1. протрёшь диск.
2. сериализация килобайта по сравнению с ожиданием завершения записи — копейки
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: библиотека для структурированного хранения данных в файлах
От: Pavel Dvorkin Россия  
Дата: 08.09.14 12:13
Оценка: +1
Здравствуйте, anatoly1, Вы писали:

A>Не нашёл подходящих библиотек для работы с ini-файлами.


Не надо никаких библиотек. Все средства в Win API

WritePrivateProfileString,WritePrivateProfileStruct...
GetPrivateProfileString,GetPrivateProfileStruct...

http://msdn.microsoft.com/en-us/library/windows/desktop/ms725501(v=vs.85).aspx

A>Но я уже потом понял, что для точечной работы с файлами нужен бинарный формат.


Ну если нужен — то нужен. Точечной работа с текстовыми файлами (то есть замена байтов "на месте") быть, конечно, не может, но задачу, поставленную тобой в исходном сообщении, эти средства решают, если данных немного.
With best regards
Pavel Dvorkin
Re: SQLite или ini + QSettings
От: Skorodum Россия  
Дата: 08.09.14 14:59
Оценка: 2 (1)
SQLite или ini-файл. Для кросплатформенной работы с ini-файлом подойдет, например, Qt/QSettings.
Re: библиотека для структурированного хранения данных в файлах
От: c-smile Канада http://terrainformatica.com
Дата: 08.09.14 16:36
Оценка: 2 (1)
Здравствуйте, anatoly1, Вы писали:

mm files вестимо.

Например http://www.codeproject.com/Articles/3924/Memory-mapped-files-and-flat-table-primitives
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.