Могу ли я разумно использовать словарь (Integer, Structure) вместо базы данных RDBMS? - PullRequest
0 голосов
/ 20 ноября 2010

В настоящее время я разрабатываю проект, который будет использовать одну небольшую таблицу (скажем, менее 10 мегабайт) на одном ПК для одного пользователя за раз. (Но, конечно, будет установлено на многих компьютерах).

Я говорю маленький, потому что 10 МБ выглядят как 1/300 от текущей доступной оперативной памяти на моем ПК (!)

В этой таблице я буду хранить строки или элементы XML-документа размером от 2 до 4 Кбайт.

Чтобы избежать огромных накладных расходов и сложного процесса установки СУБД, мой вопрос:

Разумно ли использовать таблицу как словарь (ключ, значение), в котором я буду создавать, обновлять и удалять элементы, и для которого я буду выполнять запросы LINQ?

Будет ли время загрузки (десериализации) сопоставимо со временем, необходимым для соединения, скажем, с базой данных SQL Server compact edition?

Смогу ли я LINQ Запрашивать часть стоимости элементов с чем-то вроде:

Dim Results = from r in myDictionnary
              where r.Value like "*mySearchString*"
              Select r

for each aChunk in Results

    dim xChunk as xElement = xElement.parse(aChunk)
    etc...

next

Любая подсказка высоко ценится. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Это решение будет работать хорошо, и время загрузки должно быть почти мгновенным.В наши дни 10 МБ данных не очень много, поэтому время чтения будет очень маленьким, а десериализация XML будет очень быстрой.

Однако следует понимать, что базе данных в памяти будет не хватать некоторых преимуществвы получаете с RDBMS или noSQL решением.Самое главное, что изменения в базе данных не сохраняются, пока пользователь не закроет программу или не сохранит базу данных.В случае сбоя программы или потери питания все изменения, внесенные в базу данных в памяти с момента последнего сохранения, будут потеряны.

Очевидно, это не проблема, если «таблица» доступна только для чтения..

1 голос
/ 20 ноября 2010

Словарь должен работать нормально. Linq-запросы также будут работать.

Если это усложняется чем одна таблица, я бы рассмотрел встроенную базу данных, такую ​​как MySql или SQL server compact.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...