Виртуальная (автономная) база данных это такая же реляционная база данных (SQL, oracle, MySQL и т.д.).
Пример для определения отличий.
Для работы с реляционной БД требуется установленное в операционной системе (Windows) ПО(желательно бесплатное) для работы с данным типом БД. Для создания файла БД требуется:
- создать необходимые таблицы.
- создать столбцы в таблицах с требуемыми параметрами (обычно делается в стороннем ПО). Делается один раз, т.к. в следующий раз при добавлении нового столбца в таблицу, данные этой таблицы стираются. Для сохранения данных, придется писать дополнительный код, который переносит данные из старой таблицу в новую.
Для изменения данных в БД необходимо:
- подключиться к файлу БД.
- считать необходимые данные из таблиц БД в переменные (массивы).
- изменить их.
- сохранить измененные считанные данные таблиц обратно в файл БД.
- отключиться от файла БД.
Для работы с автономной БД дополнительное ПО не требуется. Для создания БД требуется:
- программно создать БД одной строкой типа: DataSet dataBase = new DataSet("nameDataBase");
- добавить в базу данных необходимое количество таблиц примерно так: DataTable table1 = new DataTable("nameTable1"); DataSet.Tables.Add(table1); ...
- добавить необходимые столбцы с требуемыми параметрами в таблицы: table1.Columns.Add("column1"); table1.Columns.Add("column2"); ...
Добавлять столбцы в таблицы и создавать/добавлять новые таблицы в БД можно в любое время, даже в процессе выполнения программы без потери данных.
- сохранить БД в одном из форматов (XML или бинарный/двоичный).
- также можно сохранять все таблицы отдельными файлами, при этом строки кода с DataSet убираются.
сохранять БД или таблицы требуется только в том случае если необходимо дальнейшая работа с ними.
Для изменения данных автономной БД требуется:
- создать программно БД или таблицы, либо загрузить имеющуюся: DataSet dataBase = new DataSet(); dataBase.ReadXml(путь); либо DataTable table1 = new DataTable(); table1.ReadXml(путь);
- изменять/редактировать БД и таблицы.
- при необходимости сохранить.
Из всего написанного есть преимущества и недостатки у обоих видов БД.
Сравнение автономной(АБД) и реляционной(РБД) БД:
- для работы с АБД файл БД сохраненный на диске считывается полностью и дальнейшее обращение к диску не требуется, только по завершении программы. В РБД с файла БД на диске считываются только необходимые данные таблиц, обрабатываются и при необходимости (а необходимость в этом нередка) сохраняются. То есть для очень огромных баз данных АБД уступает РБД, оперативка не резиновая.
- для создания новых таблиц и столбцов в АБД не требуется знаний LINQ, в РБД - это обязательно.
- при создании новых столбцов в РБД данные в таблице стираются, в АБД.- нет.
- для работы с РБД требуется дополнительное стороннее ПО, для АБД - нет.
Вывод:
Для небольшой базы данных АБД имеет только плюсы.
При создании проекта использование АБД ускоряет процесс.
После финального создания проекта при необходимости можно перейти на РБД. Изменения в коде будут незначительными.
Если взять как образец игру Цивилизация, какой размер сохранки, а это и есть основная база данных игры, которая является самой большой базой (карта, игроки, юниты и т.д. и т.п.) ??? На самой большой карте размер сохранки не превышает 2 мегабайт. Допустим это заархивированный вариант и при загрузке происходит разархивирование и реальный размер в 10 раз больше. То есть 20 мегабайт. Пусть кто нибудь скажет мне ради чего стоит использовать РБД из за 20 мегабайт, или даже больших размеров - до 100 мегабайт?
Нынешние компы с оперативкой не менее 1 ГБ этого даже не почувствуют.
Не думаю что база данных создаваемой игры в финальной версии будет занимать больше 20 мегабайт. А выводы делайте сами, стоит ли заморачиваться из за 20 мегабайт над созданием реляционной РБД.
Почитать про АБД в книгах по шарпу. Все что касается DataSet
Предыдущее обсуждение этой темы.