Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как лучше организовать и хранить данные?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посоветуйте, пожалуйста, как лучше организовать и хранить такие данные:
 
есть программа, которая постоянно развивается. Пользователь, работая с ней, создает новые данные и модифицирует старые. Хотелось бы хранить всё в одном файле. Новая версия программы может создать новые таблицы, новые структуры и т.д.
 
Программа для операционной системы Android.

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 16:15 16-10-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Андроиде есть встроенный SQLite. Там и храните.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:46 17-10-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
Хотелось бы нестандартными средствами, чтобы данные не менялись извне

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 10:57 17-10-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare
Можно шифровать БД. Я этим не интересовался, может быть, сейчас есть встроенные средства. Раньше было такое решение: http://stackoverflow.com/questions/4164051/sqlite-encryption-for-android#4164051

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:38 17-10-2016 | Исправлено: Dronton2, 11:39 17-10-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
Спасибо. А как действовать, если от версии к версии к таблицам добавляются новые поля? Будет ли новая версия читать старый формат БД?

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 10:18 20-10-2016
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
А как действовать, если от версии к версии к таблицам добавляются новые поля?

Если вы сами пропишите в коде как новой версии работать со старыми полями, то будет.  
Я например в аналогичной ситуации, пытался делать селект по новому полю, ловил исключение, что поле не существует и добавлял это поле в старую таблицу. А после этого работал с ней уже.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:29 20-10-2016
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
Спасибо. А как действовать, если от версии к версии к таблицам добавляются новые поля?
Я пишу в AndroidStudio. Использую библиотеку android.database.sqlite.SQLiteOpenHelper. В ней есть метод onUpgrade. Он автоматически вызывается, если версия БД не совпадает с версией БД, прописанной в приложении. Он получает 2 целых числа - версию БД приложения и версию с которой работает приложение.
Создаёте свой класс, унаследованный от SQLiteOpenHelper.
Для создания БД (если приложение первый раз запускается), переопределяете метод onCreate. В нйм пишите скрипты создания БД.
Для обновления со старых версий - onUpgrade. Внутри него пишите скрипты обновления БД от версии к версии. Например:

Код:
if (oldVersion < 1){//здесь должен быть скрипт обновления до версии 2
}
if (oldVersion < 2){//здесь должен быть скрипт обновления с версии 2 до версии 3
}
и т.д.
 
Имхо, просто, удобно и ничего лишнего.
 
Есть обучалка: http://startandroid.ru/ru/uroki/vse-uroki-spiskom/79-urok-39-onupgrade-obnovljaem-bd-v-sqlite.html

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 16:08 20-10-2016 | Исправлено: Dronton2, 16:09 20-10-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Dronton2
 
спасибо вам

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 08:41 21-10-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
лучше этого не найдете, поддерживает все
http://synopse.info/forum/viewforum.php?id=2

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 12:44 25-10-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
 
для Firemonkey есть версия?

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 13:00 25-10-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare
не понимаю при чем тут фаерманки?
фреймворк позволяет писать под все что угодно.

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 10:14 26-10-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
 
Есть VCL, а есть FMX. И это далеко не одно и то же

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 18:33 30-10-2016
alexeyz



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Исли структура данных постоянно меняется, то легче использовать NoSQL хранилища.  
 
Если данных не много, то можно вообще все запихнуть в один JSON-файл и с ним работать.
 
Synopse расчитан на клиент-серверную архитектуру, для хранения чисто на локальном устройстве  могу посоветовать http://developer.couchbase.com/documentation/mobile/current/develop/guides/couchbase-lite/index.html

Всего записей: 186 | Зарегистр. 22-10-2002 | Отправлено: 15:09 07-11-2016
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да в качестве хранилища может выступать и XML и json. А также файлы, но в случаи с файлами поддержка нормальной версионности ложиться на плечи программиста. А насчет не изменяемы из вне это лишнее, если надо все равно докопаются.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 21:41 09-11-2016
maxsv2



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Формат хранения определяется Вашим необходимостью оперирования данными, умением работы с данными из программы и объемом хранения.  
По молодости - ничего из движков не нравилось, все хранил внутри программы в структуре рекордов сам писал сам читал, сам тусовал рекорды.  
Но данных было не много все сразу прочитал и этим пользовался, когда надо  - записал в файл.
При серьезном объеме, выборки, фильтры , агрегаты - лучше готовый движек какой-либо БД.
Для ряда задач - SQL оперирование очень удобно, для других - NoSQL комфортнее.

Всего записей: 191 | Зарегистр. 24-01-2004 | Отправлено: 16:06 29-04-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxsv2
 
да, я тоже уже понял, что лучше не изобретать велосипед

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 01:29 30-04-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
Пользуюсь компонентами для Firemonkey - LiteDAC (работа с SQLite) и не понял пока, как действовать, если новая версия программа работает с полями, которых нет в старой версии базы.
 
Выдает ошибку, что поле неизвестное.

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 13:50 30-04-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если новая версия программы обращается к новым полям - наверное они ей нужны для работы? Можно на старте вычитать структуру БД (или версию) и использовать только имеющиеся поля (версионировав внутри тексты запросов)...

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 15:44 30-04-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
landy
 
Хотелось бы автообновление полей)

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 09:08 01-05-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare
Одно и тоже в двух темах. Не порядок.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 12:24 01-05-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как лучше организовать и хранить данные?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru