Нужно сохранить много записей для моего приложения… должен ли я использовать локальную базу данных instad?

#c# #.net #xml #sql-server-ce #local-database

#c# #.net #xml #sql-server-ce #local-database

Вопрос:

Я собираюсь начать разработку «машины времени» для Windows. Мне нужно сохранить много записей в таблице. Каждый раз, когда я выполняю резервное копирование, я буду записывать около 50 000 записей, потому что именно столько файлов у меня на компьютере (каждая запись не имеет никакого отношения к хранению файла. запись будет содержать путь, по которому находится каждый файл) В любом случае, я не знаю, мог бы я использовать XML для хранения своих записей, поскольку мои запросы не будут сложными, плюс его проще развернуть по сравнению с созданием локальной базы данных, где я не знаю, будет ли это более эффективно, потому что, хотя запросы будут простыми, я буду иметь дело с большим количеством данных. Более того, я не знаю, может ли локальная база данных быть больше 2 ГБ, и я оцениваю, что база данных будет составлять около 3 ГБ, если регулярно использоваться в течение года.

Я предпочитаю использовать XML и использовать Xpath для выполнения запросов, что упрощает развертывание моего приложения. Но если создание локальной базы данных окажется более эффективным, а XML замедлит работу моего приложения, потому что у меня слишком много записей, тогда я создам локальную базу данных вместо этого. Любые другие рекомендации будут полезны, возможно, мне нужно сделать что-то еще.

Ответ №1:

Взгляните на SQLite.

Это встроенная, но мощная база данных. Вам не нужно устанавливать экземпляр SQL server.
Вы можете думать об этой базе данных как о файле с определенным API. API позволяет запускать SQL-запросы к этому файлу.

Комментарии:

1. 1 Я не использовал SQLite — но что-нибудь с небольшим объемом, приличным API и хорошей производительностью — отличная идея.

2. Я думаю, что указатель на привязку C # был бы полезен (и поскольку я ничего не знаю о C #, я могу только догадываться, что это правильно: system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

Ответ №2:

SQL Server 2008 R2 Express допускает базы данных размером до 10 ГБ — так что это вполне может стоить рассмотреть, учитывая ваши предполагаемые потребности в пространстве.

Гораздо лучше хранить ваши данные в какой-либо форме базы данных, а не в XML — поскольку последний быстро вырастет до такого размера, что выполнение запросов станет очень медленным и потребует много памяти.

Комментарии:

1. Для пояснения: XML может быть полезен для обмена данными или удобства чтения человеком. Большой двоичный объект XML — это не база данных, это просто большой двоичный объект xml, и это один из наименее удобных способов хранения данных для доступа к компьютеру и запросов.

Ответ №3:

Использование XML для хранения больших объемов данных потребует значительного использования памяти при попытке доступа к данным. Это также не очень эффективно, когда дело доходит до использования пространства для хранения. Я бы рекомендовал использовать версию SQL. Вы могли бы использовать одну из экспресс-версий Microsoft SQL или вы могли бы использовать версию SQL с открытым исходным кодом, такую как MySQL.

Когда вы хотите сохранить много информации, вам нужно обратиться к реляционной базе данных. Если вы ДЕЙСТВИТЕЛЬНО не хотите идти по этому пути, вы могли бы рассмотреть возможность сохранения каждой резервной копии в отдельном XML-файле. Это обеспечило бы большую переносимость и уменьшило бы объем вашей памяти при доступе к архивированным данным.