Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор хранилища данных - XML или SQLite? Плюсы и минусы 
:(
    Опции темы
Lindemann66
  Дата 2.8.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всем привет!
Вопрос такой

Встала задача о выборе хранилища данных

Пишу на C++, вариантов, соответственно, масса
Все они условно делятся на 2 вида
БД либо файлы

БД соответственно делятся на требующие сервер и не требующие
Требующие - это использующие MySql и SQL
Они не подходят по той причине, что требуют установки сервера
Что остаётся?
Вроде бы, наилучший вариант - использовать SQLite

Что касается файлов
Тут вариант - либо бинарные, либо XML

Так вот, какие на ваш взгляд есть плюсы и минусы у данных вариантов?

Буду благодарен за любой ответ.

Добавлено @ 13:20
также интересует такая характеристика, как скорость работы...
допустим, на уровне количества выполняемых insert'ов в секунду...

Это сообщение отредактировал(а) Lindemann66 - 2.8.2011, 13:20
--------------------
stay true
PM MAIL WWW ICQ   Вверх
Greeneyed
Дата 2.8.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Когда я учился на втором курсе мы реализовывали свою БД на файликах. Файлы использовались бинарные. Один файл - одна таблица. Приходилось руками реализовывать уйму работы по записи, поиску, удалению и контролю целостности данных. Целью этого задания было научить нас писать на С++ в принципе. Для реального приложение выбор в пользу своих файлов скорее всего выльется в значительном увеличение времени разработки. Плюсом бинарных файлов является скорость работы, т.к. ты выделяешь под одну запись таблицы фиксированное кол-во байт. То есть структура данных User будет содержать имя, телефон, пароль, логи - это всё должно быть фиксированной длинны. Значит файл нужно читать не посимвольно, а пачкой == sizeof(User). Но в таком случаи изменить структуру базы, даже просто увеличить размерность полей, почти невозможно. Нужно будет писать конвертор из старой версии в новую. При испольховании xml изменять структуру базы легче, но размер файлов существенно увеличится, да и время надо тратить на парсинг xml-ок. SQLite вариант неплохой, но тоже требует осторожности. Он поддерживает немного типов данных и всё, что он не особо понял, превратит в строку. Зато не придется самому реализовывать запись/чтение, можно спокойно делать JOIN и внутренние запросы (а в случаи файликов это все приходилось реализовывать ручками). Так же можно делать связи по внешним ключам. Минус в типах данных. Например, дату он хранит строкой, а значит никто вам не мешает по ошибки в дату записать какой-либо текст. 
Я бы выбрал SQLite, т.к. мне лень было бы тратить полдня (а то и день) для реализации хитрого джойна по 6и таблицам.

Это сообщение отредактировал(а) Greeneyed - 2.8.2011, 14:39
PM MAIL   Вверх
Lindemann66
Дата 2.8.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Спасибо больше за столь  обстоятельный ответ!  smile 
--------------------
stay true
PM MAIL WWW ICQ   Вверх
Greeneyed
Дата 2.8.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 20.4.2006

Репутация: нет
Всего: нет



Да не за что. Xml удобно использовать для обмена данными между разными БД, а вот хранить в них данные не по фэн-шую как-то.
PM MAIL   Вверх
Lindemann66
Дата 2.8.2011, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



А что скажете о Firebird, как альтернативе SQLite?
Firebird ведь тоже может идти в версии без сервера (embedded)
--------------------
stay true
PM MAIL WWW ICQ   Вверх
voral
Дата 2.8.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



Очень хороший сервер. 10 лет с ним работаю. Но все зависит от вашей задачи. Может это будет микроскоп для заивания гвоздей. smile


Цитата(Lindemann66 @  2.8.2011,  13:15 Найти цитируемый пост)
БД соответственно делятся на требующие сервер и не требующие
Требующие - это использующие MySql и SQL

Несовсем корректная фраза. SQL - это не сервер, это язык запросов. Который используется в числе прочих и MySQL.

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.