12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
|
|
1 | |
В каком формате лучше хранить историю работы приложения?02.07.2015, 19:36. Показов 3108. Ответов 20
Метки нет (Все метки)
Подскажите, в чем обычно хранят данные различные игры под windows, которые не онлайн? Просто в бинарных файлах своей структуры без баз данных?
0
|
02.07.2015, 19:36 | |
Ответы с готовыми решениями:
20
В каком формате лучше хранить образ ОС? В каком формате лучше хранить локальную БД В каком формате лучше хранить текст для корректной обработки в дальнейшем? Как Лучше Хранить Историю По Документу? |
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 2
|
|
02.07.2015, 20:22 | 2 |
Это смотря где. Некоторые используют базы данных, но зачастую используется какие нибудь велосипедные бинарные форматы.
0
|
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
|
|
02.07.2015, 20:41 [ТС] | 3 |
а может подскажите, что проще использовать? вообще говоря нужжно обмениваться информацией с сервером(иногда, условно загрузка обновленных данных и передача некоторых результатов) и хранить историю работы приложения
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
02.07.2015, 20:53 | 4 |
базы данных это и есть "бинарные файлы со своей структурой".
иногда ещё со своей иерархией каталогов. впрочем экспортировать базу в отдельный файлик умеет, пожалуй, любая уважающая себя база. Добавлено через 3 минуты рекомендую глянуть в сторону Serialization - Boost
0
|
02.07.2015, 21:54 | 5 |
Если нужна простая БД без дополнительной установки и прочих манипуляций, то советую SQLite глянуть. Ее легко таскать с собой и конечный пользователь даже не будет знать, что где-то там какая-то БД используется. В проект добавляется легко - просто 1 (!) файл рядом положить.
0
|
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
|
|
02.07.2015, 22:37 [ТС] | 6 |
Хм, интересно
А по скорости работы я смогу вести постоянную смену данных в файлах? Скажем так, хранить текущее состояние программы, то есть перезаписывать информацию довольно часто и на сколько это удобно? О, вопрос, как человеку с опытом, дайте хоть пару ссылок нормальных (желательно с примером), как поставить SQLite и как его подключить к C++, инфы по SQL много, но толком как сделать нормальную локальную SQL БД без заморочек не нашел( Ну и напоследок, есть ли какие-то критерии, когда лучше БД типа SQLite, а когда Serialization - Boost?
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.07.2015, 00:06 | 7 |
чтение/запись - это очень медленные операции.
по возможности стремятся максимум данных держать в кэше (хранилище данных, расположенное в оперативной памяти). а на жесткий диск пишут лишь по необходимости. вы не поняли. это вещи из разных категорий. БД - базы данных. хранилища информации, ориентированные на её быстрый поиск, и возможность подключаться одновременно нескольким клиентам. однако, прежде чем информация попадет в базу данных, её ещё нужно где то раздобыть. ваша программа должна сформировать какие то начальные данные, которые вы хотите сохранить. и вот, для того, что бы формировать эти данные, здесь на помощь приходят технологии "сериализации данных". сериализаторы типа boost.serialization позволяют удобным и простым способом извлекать данные из объектов различных классов, и объединять их в единую структуру: бинарный файл, xml/json, и тп представления.
0
|
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
|
|
03.07.2015, 00:45 [ТС] | 8 |
То есть сериализаторы используются для компоновки данных и далее готовые данные записываются в БД или файл?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 01:00 | 9 |
БД - хранилища структурированных данных. Представляет собой массивы однотипных структур (таблиц), с наперед заданным типом полей. А за "объединять их в единую структуру" при использовании БД надо бить по рукам.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
03.07.2015, 01:11 | 10 | |||||
для извлечения данных из объекта.
что с этими данными будет дальше, сереализацию не интересует. задача сериализации: помочь программисту легко и быстро извлекать данные из объектов в какое либо представление (например - обычный текстовый файл). или напротив: имя на руках текстовый файл, на его основе легко и быстро воссоздавать в программе объекты. пример использования:
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 01:12 | 11 |
Нормальные БД поддерживают такие плюшки как атомарность и транзакции. То есть, если во время записи свет мигнул, база скорее всего не превратится в кашу. Чего, я так полагаю, нельзя сказать о Бусте и прочих велосипедах. Плюс, велосипед может оказаться весьма чувствителен к смене формата типа "добавили одно поле в сохраняемую структуру". С другой стороны, велосипед накодить значительно проще чем мучаться с SQL запросами. А то что при "свет мигнут" грохнется файл с сохранением, ну это не так страшно. Сейв - не готовой отчет бухгалтерии.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.07.2015, 01:18 | 12 |
жирным выделена деталь реализации конкретной БД.
а эти детали - не принципиальны. Добавлено через 5 минут я работаю с несколькими базами: MSSQLSERVER, PostgresSQL при этом существует БД, которая предназначена для локальной работы (хранилище размещается в оперативной памяти). и существуют различные архивы: представления данных. например: xml. благодаря архивам можно например, легко и просто перегнать всю базу целиком из MSSQLSERVER в PostgreSQL, и обратно. то бишь, xml здесь выступает в качестве некого "унифицированного" представления данных, с которыми умеют работать все, поддерживаемые компанией базы. при этом внутренняя структура конкретного представления (будь то xml, или хранилище PostgresSQL) не имеет значения. она у разных баз своя собственная, и не зависит от окружения. в связи с этим, я нахожу ваш тезис безосновательным. Добавлено через 1 минуту сравнивать механизм сериализации с БД - это все равно, что сравнивать теплое с мягким.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 01:26 | 13 |
Деталь реализации любой нормальной БД. БД способная хранить лишь бесформенный ком binary данных, это что-то из каменного века, непонятно зачем нужное.
Напоминаю, ТС спрашивал в чем ему хранить данные игрушки, а не как перегнать базу из MSSQLSERVER в PostgreSQL. Данные игрушки хранятся чтобы их читать, искать и редактировать, а не чтобы в PostgreSQL перегонять.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.07.2015, 01:34 | 14 |
мне не очень интересно, какие БД вы полагаете нормальными, а какие нет.
базы случаются разными. принципиальное значение имеет только их функциональные возможности и интерфейс. а там, пусть хоть в сферическом астрале свои данные содержат. это - излишнее напоминание. итак понятно, что раз у ТС такие вопросы, значит PostgreSQL ему сейчас точно не нужен. а вот сериализация понадобится по любому, если игрушка чутка сложнее тетриса.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 01:44 | 15 |
Реляционными, иерархическими, etc. Все они структурируют данные внутри себя, разница лишь в способе.
Не понадобится, так как уже упрятана в недра СУБД. И да, программы использующие SQLite, тянут за собой и СУБД.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.07.2015, 02:09 | 16 |
не нужно объяснять мне то, что я итак знаю.
я вам ещё раз повторяю: детали реализации конкретных баз не принципиальны. вы похоже не осознаете о чем речь. представьте себе: есть некий проект. у него есть некая оопнутая архитектура. кучка разных классов, которые агрегируют другие классы. есть множество объектов самых разных классов.. нужно сохранить данные. как именно вы предлагаете извлекать данные из объектов, и скармливать их front-end базы данных? СУБД ничего не знает про ваши бизнес-классы, и объекты. она знает только о своим собственном представлении данных, и больше ни о чем. она вообще не подозревает о существовании какой то там игрушки. что бы добавлять/извлекать из базы данные, вам придется написать код, который будет брать объекты, извлекать из них данные, и на основе этих данных формировать запросы в БД. вы конечно можете делать это каждый раз вручную, и затрачивать на эту рутину кучу времени. а можете вооружится механизмом сериализации, который автоматизирует для вас эту процедуру. и сможет формировать данные любых объектов независимо от их сложности. сериализатор не обязательно должен запихивать данные в plain-text/binary/xml/json файлы. с тем же успехом, он может накормить данными front-end библиотеку конкретной базы данных. и я вам ещё раз, и в последний раз делаю замечание: детали реализации конкретной СУБД не принципиальны. совершенно не важно, как конкретная СУБД сериализует/десереализует свои данные. это не имеет никакого отношения к бизнес-проекту (игрушке) пользователя.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 03:55 | 17 |
В памяти. А на диске у него кортеж "тип юнита/координаты/очки жизни" и больше ничего. И сериализация там, как собаке пятая нога. Впрочем, БД тоже по большей части для понту. Напоминаю, мы говорили о игре, а не базе знаний ИИ.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.07.2015, 11:50 | 18 |
а это и есть сериализация, если что.
вот этот ваш кортеж на диске - продукт сериализации. сериализация - процедура преобразования объекта в некий формат по некоторым правилам. в более точной формулировке: процедура преобразования объектов в некую последоватольность байт по некоторым правилам. пример: если вы написали дружественную функцию, которая выводит состояние объекта в std::cout, то вы написали сериализацию для вывода в поток std::cout. просто её делать можно по уму (см boost.serialization/cereal), и поиметь кучу профита: писать минимум кода, возможность выбирать любые архивы, конвертировать данные из одного формата в другой, и тп. а можно по тупому: для каждого класса каждый раз в ручную писать логику сериализации в один единственный формат. и прибиться к нему намертво гвоздями. зачем вы напоминаете мне об одном и том же? я же вам уже написал выше:
0
|
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
|
|
03.07.2015, 15:09 [ТС] | 19 |
Не по теме: hoggy, Renji, Хорошо бы какую-нибудь статью в раздел "Visual C++ и базы данных" с сравнением БД и полезными ссылками, думаю такие вопросы ни у одного меня возникают Добавлено через 1 час 15 минут Renji, может подскажите пару ссылок как подключить SQLite к проекту C++ на windows ?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
03.07.2015, 15:15 | 20 |
Какие еще преобразования в последовательность? INSERT INTO my_table VALUES ("peasant",1,2,3);, дальнейшая судьба объектов - не моя проблема. В особо ленивом случае, вообще единственный stream.write, который ничего не преобразует, пишет как есть. Сериализация же - именно преобразование как минимум в пары "имя поля:значение". Иначе это профанация одна (любое расширение формата файла, сделает его нечитаемым).
Я его только под пингвинами щупал.
0
|
03.07.2015, 15:15 | |
03.07.2015, 15:15 | |
Помогаю со студенческими работами здесь
20
В каком формате удобнее хранить данные? Как и в каком формате хранить координаты карты В каком формате хранить число, чтобы нули спереди не отбрасывались В каком формате хранить картинку в таблице MS SQL Server с прозачным фоном Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |