![]() |
|
|
![]()
|
|
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Всем привет!
Вопрос такой Встала задача о выборе хранилища данных Пишу на C++, вариантов, соответственно, масса Все они условно делятся на 2 вида БД либо файлы БД соответственно делятся на требующие сервер и не требующие Требующие - это использующие MySql и SQL Они не подходят по той причине, что требуют установки сервера Что остаётся? Вроде бы, наилучший вариант - использовать SQLite Что касается файлов Тут вариант - либо бинарные, либо XML Так вот, какие на ваш взгляд есть плюсы и минусы у данных вариантов? Буду благодарен за любой ответ. Добавлено @ 13:20 также интересует такая характеристика, как скорость работы... допустим, на уровне количества выполняемых insert'ов в секунду... Это сообщение отредактировал(а) Lindemann66 - 2.8.2011, 13:20 --------------------
stay true |
|||
|
||||
| Greeneyed |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.4.2006 Репутация: нет Всего: нет |
Когда я учился на втором курсе мы реализовывали свою БД на файликах. Файлы использовались бинарные. Один файл - одна таблица. Приходилось руками реализовывать уйму работы по записи, поиску, удалению и контролю целостности данных. Целью этого задания было научить нас писать на С++ в принципе. Для реального приложение выбор в пользу своих файлов скорее всего выльется в значительном увеличение времени разработки. Плюсом бинарных файлов является скорость работы, т.к. ты выделяешь под одну запись таблицы фиксированное кол-во байт. То есть структура данных User будет содержать имя, телефон, пароль, логи - это всё должно быть фиксированной длинны. Значит файл нужно читать не посимвольно, а пачкой == sizeof(User). Но в таком случаи изменить структуру базы, даже просто увеличить размерность полей, почти невозможно. Нужно будет писать конвертор из старой версии в новую. При испольховании xml изменять структуру базы легче, но размер файлов существенно увеличится, да и время надо тратить на парсинг xml-ок. SQLite вариант неплохой, но тоже требует осторожности. Он поддерживает немного типов данных и всё, что он не особо понял, превратит в строку. Зато не придется самому реализовывать запись/чтение, можно спокойно делать JOIN и внутренние запросы (а в случаи файликов это все приходилось реализовывать ручками). Так же можно делать связи по внешним ключам. Минус в типах данных. Например, дату он хранит строкой, а значит никто вам не мешает по ошибки в дату записать какой-либо текст.
Я бы выбрал SQLite, т.к. мне лень было бы тратить полдня (а то и день) для реализации хитрого джойна по 6и таблицам. Это сообщение отредактировал(а) Greeneyed - 2.8.2011, 14:39 |
|||
|
||||
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Спасибо больше за столь обстоятельный ответ!
--------------------
stay true |
|||
|
||||
| Greeneyed |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.4.2006 Репутация: нет Всего: нет |
Да не за что. Xml удобно использовать для обмена данными между разными БД, а вот хранить в них данные не по фэн-шую как-то.
|
|||
|
||||
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
А что скажете о Firebird, как альтернативе SQLite?
Firebird ведь тоже может идти в версии без сервера (embedded) --------------------
stay true |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Очень хороший сервер. 10 лет с ним работаю. Но все зависит от вашей задачи. Может это будет микроскоп для заивания гвоздей.
Несовсем корректная фраза. SQL - это не сервер, это язык запросов. Который используется в числе прочих и MySQL. |
|||
|
||||
![]()
|
| Правила форума "C++: Базы данных" | |
|
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |