Правильный подход для управления базой данных
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Правильный подход для управления базой данных
Собственно я давно уже особо не вникал в данную тему и реализовывал БД в простом варианте(пару таблиц, пару связей). На данный момент интересует ПРАВИЛЬНЫЙ подход к управлению SQLite. Хотя может быть и не SQLite, но вдруг именно для SQLite есть что-то интересное. пара вопросов:
1. Используете ли вы ORM подход для работы с данными?
2. Как лучше читать/писать данные в базу? (правильная архитектура). Синглтон какой-нибудь для обработки, либо какие-то CursorLoaders, либо еще что-то.
3. Место хранения базы. Если база небольшая, в основном текстовые данные, то где вы стараетесь её хранить? Используете ли какую-нибудь синхронизацию, если приложение клиент-серверное? Может у гугла есть какое-то API, которое позволяет делать синхронизацию с его серверами?
4. Интересуют актуальные статьи по этому поводу, желательно свежие, а также желательно на английском языке. Видео на английском к сожалению пока не могу воспринимать, уровень не тот.
1. Используете ли вы ORM подход для работы с данными?
2. Как лучше читать/писать данные в базу? (правильная архитектура). Синглтон какой-нибудь для обработки, либо какие-то CursorLoaders, либо еще что-то.
3. Место хранения базы. Если база небольшая, в основном текстовые данные, то где вы стараетесь её хранить? Используете ли какую-нибудь синхронизацию, если приложение клиент-серверное? Может у гугла есть какое-то API, которое позволяет делать синхронизацию с его серверами?
4. Интересуют актуальные статьи по этому поводу, желательно свежие, а также желательно на английском языке. Видео на английском к сожалению пока не могу воспринимать, уровень не тот.
Re: Правильный подход для управления базой данных
Спроси тётю Инну, или вы по этому поводу и ссорились?
1. Да, если не ошибаюсь то сейчас это ActiveDroid;
2. В оф туториале и книгах пишут что контент провайдер;
3. Я читал книгу Android PRO, там прекрасно всё написано;
1. Да, если не ошибаюсь то сейчас это ActiveDroid;
2. В оф туториале и книгах пишут что контент провайдер;
3. Я читал книгу Android PRO, там прекрасно всё написано;
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
Это они с Денисом.Спроси тётю Инну, или вы по этому поводу и ссорились?
P.S. Слава, я добавил еще один маленький вопрос =)
Re: Правильный подход для управления базой данных
Сейчас придет Foenix и расскажет как правильно 
UPD. опоздал
UPD2. Собственно я так понимаю интересует только база данных которая создается приложением с нуля, или вычитывание из существующей тоже актуально? Так же интересует ли вопрос менеджмента закачиваемых баз данных (например в моем случае человек выбирает какой нибудь город, скажем Москва, по нему выкачивается база, потом он хочет переключиться на Киев, выкачивается его база итд)?
UPD. опоздал
UPD2. Собственно я так понимаю интересует только база данных которая создается приложением с нуля, или вычитывание из существующей тоже актуально? Так же интересует ли вопрос менеджмента закачиваемых баз данных (например в моем случае человек выбирает какой нибудь город, скажем Москва, по нему выкачивается база, потом он хочет переключиться на Киев, выкачивается его база итд)?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Правильный подход для управления базой данных
прочитал, по БД я вообще почти профан, и на этот вопрос у меня ответа нетуm090050 писал(а):P.S. Слава, я добавил еще один маленький вопрос =)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Правильный подход для управления базой данных
Мы с ней не ссоримся - это у нас такой рабочий процесс)m090050 писал(а):Это они с Денисом.Спроси тётю Инну, или вы по этому поводу и ссорились?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Правильный подход для управления базой данных
она же теперь боится в скайп заходить, и как только начинаешь у неё спрашивать "А что у вас там с проектом" у неё сразу слёзы на глазах наворачиваются... жалко смотретьKamiSempai писал(а):Мы с ней не ссоримся - это у нас такой рабочий процесс)m090050 писал(а):Это они с Денисом.Спроси тётю Инну, или вы по этому поводу и ссорились?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильный подход для управления базой данных
ну все все про меня знают, особо Слава
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
Да, уже есть люди кто пользуется старой версией. Скорее всего придется выкачивать данные со старой и заносить их в новую.или вычитывание из существующей тоже актуально?
это я так думаю уже зависит от того, как построится архитектура. У нас геолокационный сервис, в котором по идее не будет много сущностей в базе, но такие вещи как закладки, история поиска, оффлайн режим трека (т.е. запись трека в базу) будут в базе. Т.е. было бы неплохо показать какие-то данные по старому запросу, если нет интернета к примеру, а не просто говорить об его отсутствии. Но это детали. Т.е. другими словами слишком частого общения с базой не предвидится. Сохранение трека идет по алгоритму такому: отправляется местоположение на сервер. Если вдруг интернет обваливается, то точки попадают в коллекцию-очередь. Если накопилось более 20 неотправленных, то в базу сбрасывается 10 из них. Другими словами, мы не дергаем постоянно базу даже при записи трека.Так же интересует ли вопрос менеджмента закачиваемых баз данных (например в моем случае человек выбирает какой нибудь город, скажем Москва, по нему выкачивается база, потом он хочет переключиться на Киев, выкачивается его база итд)?
Re: Правильный подход для управления базой данных
Миша, чем тебя существующий подход не устраивает, коли все это есть?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
Я не знаю какой сейчас существующий подход. Да и это не единственный вопрос.
Re: Правильный подход для управления базой данных
я имею ввиду у вас в программе
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
У нас две базы, которые надо правильно слить в одну, но первая использует ORM подход, поэтому она не может работать с флешкой (работа с базой данных на версии Api7 несколько другая и требует шаманства, а с ORM вообще сходит на нет). Вторая на флешке, кеширует. В общем это разброс и требует полной переделки. К тому же синхронизация с сервером не за горами. Так что надо будет сделать с блекджеком и составляющими.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
Так много топиков с базами данных и что, никто никогда не думал о том, как лучше с ней работать?
Re: Правильный подход для управления базой данных
я думала.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Правильный подход для управления базой данных
Покажу как работал с базой в последнем своем проекте, тут простой пример - https://github.com/akadatsky/UserDatabaseExamplem090050 писал(а):Так много топиков с базами данных и что, никто никогда не думал о том, как лучше с ней работать?
Основные идеи:
- главная логика в файле UserDatabase
- база хранится в системой папке приложений: /data/data/packagename/databases/user.db
- стандартный метод onUpgrade, в случае если в существующую таблицу нужно добавить столбец или скопировать таблицу в это делается тут
- пример использования:
Код: Выделить всё
private List<User> users;
private UserDatabase userDatabase;
userDatabase = UserDatabase.get(context);
userDatabase.addUser(new User("someName", "someSecondName"));
users = userDatabase.getAllUsers();
userDatabase.removeAllUsers();
Код: Выделить всё
private static final String USER_TABLE = "user";
private static final CursorMapper<User> userMapper = CursorMapper.create(User.class);
public List<User> getAllUsers() {
Cursor cursor = getReadableDatabase().rawQuery("SELECT * FROM " + USER_TABLE, null);
return userMapper.map(cursor);
}
- используется кастомный mapper, который из курсора может получить список model, при этом типичная model выглядит так:
Код: Выделить всё
public class User {
@Column("_id")
private String id;
@Column("name")
private String name;
@Column("second_name")
private String secondName;
@Column("created_at")
private Date createdAt;
public User() {
}
public User(String name, String secondName) {
this.name = name;
this.secondName = secondName;
}
// getters and setters
}
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
В принципе понял, спасибо. Кстати, была ли необходимость работать с базой с двух процессов?
Re: Правильный подход для управления базой данных
имеется в виду в разных приложения, которые работают с одной базой?m090050 писал(а):В принципе понял, спасибо. Кстати, была ли необходимость работать с базой с двух процессов?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Правильный подход для управления базой данных
У меня не так много опыта в Android, потому отвечу спецефично для того, с чем сталкивался.m090050 писал(а):Собственно я давно уже особо не вникал в данную тему и реализовывал БД в простом варианте(пару таблиц, пару связей). На данный момент интересует ПРАВИЛЬНЫЙ подход к управлению SQLite. Хотя может быть и не SQLite, но вдруг именно для SQLite есть что-то интересное. пара вопросов:
1. Используете ли вы ORM подход для работы с данными?
2. Как лучше читать/писать данные в базу? (правильная архитектура). Синглтон какой-нибудь для обработки, либо какие-то CursorLoaders, либо еще что-то.
3. Место хранения базы. Если база небольшая, в основном текстовые данные, то где вы стараетесь её хранить? Используете ли какую-нибудь синхронизацию, если приложение клиент-серверное? Может у гугла есть какое-то API, которое позволяет делать синхронизацию с его серверами?
4. Интересуют актуальные статьи по этому поводу, желательно свежие, а также желательно на английском языке. Видео на английском к сожалению пока не могу воспринимать, уровень не тот.
1. Да - всегда, но пишу его всегда сам реализуя только необходимый функционал. Напрямую к базе не обращаюсь никогда, только через объект.
2. В основном базу на устройстве лично я использую для заполнения List/Grid view, после загрузки контента, потому мне хватает стандартных Cursor. При более менее сложной логике работы с базой - только rest. Т.е. я вообще ничего не храню на устройстве, вся логика работы на сервере, Android клиент только передает параметры для формирования insert/select. Но опять же в том случае, если я что то делаю с базой непосредственно в Android - по максимуму использую SQL. Ну а ограничения в досутпности сети у меня пока не возникало в задачах.
P.S. как бы да, делая запрос к примеру к vk.com, это делаю с сервера, далее в Android мне проще.
3. Как и сказал уже я по максимуму исопльзую cloud, на устройстве база в основном динамическая. По поводу API, я использую App Engine или Heroku для серверного кода. Синхронизация, есть google drive и подобное, зависит от клиента, хотя для настоящей синхронизации задачи у меня не было, поскольку, как и говорил базы не устройстве нет.
4. Ничего не читал
P.S> забыл ссылку

- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Правильный подход для управления базой данных
в одномимеется в виду в разных приложения, которые работают с одной базой?
А пишешь через интерфейс к существующему API андроида или на более низком уровне? ORM же получается медленней работает, нежели с курсором. Или спасает то, что в основном работа с базой идет на серверной стороне?1. Да - всегда, но пишу его всегда сам реализуя только необходимый функционал. Напрямую к базе не обращаюсь никогда, только через объект.
Динамическая это когда в ОЗУ данные загружаются с базы?Как и сказал уже я по максимуму исопльзую cloud, на устройстве база в основном динамическая.
