На моем сервере мне нужно как-то хранить пользовательские данные. Некоторое время назад я использовал файлы INI для записи и чтения этих значений. Даже с тысячами файлов это было невероятно быстро (мс), возможно, из-за кеширования. Недавно я рассматривал некоторую БД, но не уверен, насколько это быстро. Этот старый метод «INI» был прост, поскольку я прямо говорю программе: «Загрузите UserJohn.ini и прочтите элемент PASSWORD». С DB мне нужно сначала выбрать запись с именем игрока и получить значения ... действительно понятия не имею, медленнее или быстрее, чем файловый подход ... Пожалуйста, игнорируйте такие аспекты, как безопасность, я хотел бы знать только ваши мнения по скорости, спасибо!
Если вы собираетесь хранить МНОГО записей, то наличие индексированной таблицы определенно может ускорить процесс. Многие сверхпростые базы данных находятся в процессе и, как правило, не слишком заинтересованы в совместном использовании соединений, поэтому, если они используются в веб-приложении (или просто в большом количестве параллельных потоков), многие из этих баз данных могут начать иметь реальные проблемы.
Есть и другие компромиссы, такие как отсутствие необходимости изобретать велосипед и просто общее обслуживание кода.
Для упомянутых вами томов база данных, вероятно, будет быстрее, поскольку вы можете индексировать таблицы. Однако это зависит от того, кэшируете ли вы файл .ini и когда. Если у вас есть возможность кэшировать файл один раз при запуске процесса, этот метод может быть быстрее. Однако, если вам нужно многократно перезагружать файл, индексированная таблица в базе данных, вероятно, будет немного быстрее, так как ей не нужно загружать весь файл при обращении к нему, чтобы вытащить одну строку.
Я бы сказал, что файлы будут кэшироваться немного быстрее. Это прямой доступ, в то время как с любой БД вам нужно подключиться, отправить команду, дождаться ответа и обработать его.
В чем-то вроде данных объемом 100 КБ разница будет не в доступе к файлу как таковом, а в том, как данные организованы и как они используются. В вашем примере один и тот же тип кода может использоваться как в sql Ce, так и в текстовых файлах (w / ado.net), но если каждая запись имеет 15 полей, индексированная таблица будет извлекать правильную запись быстрее, чем текстовый файл может быть проанализирован на найдите ту же запись. Однако по мере уменьшения количества полей уменьшается и разрыв в производительности. Разрыв в производительности обычно еще больше при рассмотрении обновлений записей. Еще одно преимущество встроенной базы данных с точки зрения дизайна заключается в том, что в отличие от приложения общих служб данных, приложение локального хранилища данных уже знает, какие вопросы можно задать. Это означает, что я могу создавать представления, чтобы еще больше ускорить выполнение запросов. Кроме того, при разработке приложения-службы данных вы должны беспокоиться о том, насколько дорогим (с точки зрения операций ввода-вывода в секунду и производительности) будет запрос по сравнению с локальной базой данных, которая может стать настолько дорогой, насколько пользователь готов смириться.
Если вам нужны возможности языка sql и не нужен запущенный сервер sql, используйте sqlite [1] вместо sql ce.
[1] https://stackoverflow.com/questions/583278/sqlite-vs-sqlce-vs-in-a-mobile-application