214 похожих чатов

Не совсем архитектурный вопрос, но всё-таки. Есть offline-first приложение. В нём sqlite

БД, вокруг которой завязана вся логика и которая выступает как SSOT.

Так же у приложения имеются настройки разных частей приложения.

Есть желание (и необходимость) некоторые настройки держать в этой же БД, чтобы можно было через неё спокойно устраивать экспорт-импорт данных.

Напрашивается какая-нибудь таблица SettingsTable со столбцами title TEXT, value ???.

И вот проблема в том, что значение разных настроек имеет разный тип. Где-то мы выбираем значение из предложенных вариантов, где-то переключается флажок, а где-то вводится текст.

Я знаю о том, что в sqlite используется type affinity, что по факту значения столбцов могут быть динамическими, но, к сожалению, не все инструменты позволяют с этим нормально работать.

И вот вопрос — насколько будет стоящей идея выставить тип для столбца значения в TEXT, как самый широкий, чтобы потом в нужных местах кастить к другим типам?

Или может у кого-то есть идея получше?

15 ответов

10 просмотров

может noSql больше подходит для сохранения настроек?

Konstantin-Dovnar Автор вопроса
Maksim Gridin
может noSql больше подходит для сохранения настрое...

NoSQL точно лучше подходит, но не покрывает условия задачи.

Konstantin-Dovnar Автор вопроса
Maksim Gridin
выгружать в json и сохранять как blob

Вот это уже любопытно. Надо будет подумать об этом.

Я может быть сделал бы два столбца key (TEXT, PK) и value (BLOB)

Konstantin-Dovnar Автор вопроса
Konstantin Dovnar
Вот это уже любопытно. Надо будет подумать об этом...

главное чтобы настроек не стало больше 2 МБ )

Konstantin Dovnar
В чём будут преимущества BLOB над TEXT?

Туда можно класть бинарные данные, если вдруг понадобится. Можно флажки как один байт хранить. Числа тоже легко конвертируются в байты.

Konstantin-Dovnar Автор вопроса
Andrey Kuznetsov
главное чтобы настроек не стало больше 2 МБ )

Конкретно настройки вряд ли даже подумают подобраться к этому пределу 🤔

Konstantin-Dovnar Автор вопроса
Arkadii Ivanov
Туда можно класть бинарные данные, если вдруг пона...

Хм, интересно. А строки так хранить выйдет? Я не особо знаком с BLOB'ами в sqlite.

Konstantin Dovnar
Хм, интересно. А строки так хранить выйдет? Я не о...

Да, думаю просто можно положить строку как есть. Я бы попробовал сначала.

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

Konstantin-Dovnar Автор вопроса
Zlatko Pušić
если вы хотите уйти от каста и связанных с ним пот...

Да. Первый вариант мне не нравится, т.к. выйдут те же яйца, только в профиль, с проверками нужного column. Второй вариант уже интереснее, выше его предложили, о нём тоже подумаю. Спасибо.

Почему бы не заюзать DataStore для настроек? А чтобы SSOT не потерялось, мержить источники в репозитории

Konstantin-Dovnar Автор вопроса
Eugene P.
Почему бы не заюзать DataStore для настроек? А что...

Именно потому что придётся переносить ssot, чего я делать не хочу. Даже банальные import-export тогда сильно усложнятся.

Похожие вопросы

Обсуждают сегодня

Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Делал задачу вот такую https://stepik.org/lesson/4985/step/9?unit=1083 получилось такое https://play.haskell.org/saved/ipKrepqe оно работает, тестов много не писал, но работае...
Fedor
22
что-то я не понимаю, в линуксе отладочную информацию как убрать из бинаря? он что с этой опцией, что без - одного и того же (достаточно большого) размера (да, я про лазарь)
Iluha Companets
13
Hey Does anyone know how can I receive push notifications from Github on my account? The official Github android app doesn't send notifications, and I don't use the email bec...
Jacob
10
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Всем привет, а может кто-то подсказать какие-то советы или типо того, как оптимальнее всего сапортить сервисы в разных локациях (канада + австралия + евпропа)? Будет ли ошибк...
Stas
8
Это что теперь, любой бот сможет принимать платежи без ебли с юр лицами?
Lencore
8
Всем привет! Может кто поможет разобраться с чёрной магией? (во всяком случае для меня) Дело вот в чём - написал я код для общения с tmc2209 драйвером по half duplex uart. М...
pronvis
4
Не догоняю немного каким боком тут эппл Вот есть веб (мини) апп, который по факту веб сайт, просто в телеге веб вью и если там оплата, то нежно вот эти приседания?
e\\/gen
7
Карта сайта