SQL Server CE или Access для переносимой базы данных с помощью c #? - PullRequest
2 голосов
/ 30 августа 2009

Я разрабатываю приложение, которое должно хранить большие объемы данных.

Я не могу использовать редакцию SQL Server Express, поскольку она требует отдельной установки, и наши целевые клиенты уже загрузили нас жалобами по поводу нашего предыдущего выпуска с SQL Server Express.

Теперь я могу выбрать между SQL Server compact и Access.

Мы храним огромное количество отчетных данных (3 миллиона в неделю). Какую базу данных я могу использовать?

Приложение является переносимым и основано на продукте.

Наша компания просит нас предоставить приложение таким образом, чтобы оно могло быть загружено и использовано кем-либо с нашего веб-сайта. Пожалуйста, помогите.

Спасибо.

Редактировать: 40000 записей в течение часа является приблизительной скоростью, с которой они хранятся. Данные хранятся в обычном varchar, datetime, nvarchar и т. Д. Нет изображений и нет двоичных или специальных вещей.

Ответы [ 3 ]

1 голос
/ 30 августа 2009

Что такое «3 миллиона данных» / 3 миллиона больших изображений? 3 миллиона байт? Там может быть огромная разница.

В любом случае, я бы, вероятно, выбрал SQL CE вместо Access, если фактический размер данных не будет превышать поддерживаемый SQL CE (4 ГБ). Я использовал SQL CE для приложений, которые собирают несколько сотен тысяч записей в неделю без проблем. База данных представляет собой один файл, является переносимой и имеет огромное преимущество, заключающееся в том, что полноценный SQL Server может просто подключиться к нему и использовать его в качестве источника данных даже в сценариях репликации.

1 голос
/ 31 августа 2009

40000 записей в час - 10 записей в секунду. Я бы предложил создать различные таблицы и индексы, необходимые для обоих, и сначала протестировать. И пусть тестирование длится 8 часов и посмотрим, что произойдет.

Вполне возможно, что первые x-записи могут вставляться достаточно хорошо, но они становятся все медленнее и медленнее. х - это число от 10К до 1М. Медленнее и медленнее довольно субъективно и зависит от приложения. В Access я бы предложил делать компакт на регулярной основе, то есть, возможно, после 100 тыс. Записей, чтобы очистить индексы. Однако, если приложение хочет вставлять записи в течение 8 часов подряд без перерыва, тогда, очевидно, это не сработает.

Или вы можете попробовать удалить индексы, вставить записи и воссоздать индексы. Однако если пользователи хотят запрашивать данные во время вставки записей, это тоже не сработает.

Кроме того, Access может работать значительно быстрее, если база данных не используется совместно. Опять же, это может быть непрактично.

Наконец, если вы все еще не получаете приличную производительность, или даже если вы получаете, подумайте о том, чтобы пользователь установил твердотельный диск и поместил на него файл своей базы данных. SSD-накопитель 32 Гб за несколько сотен долларов отнимает у разработчиков много времени.

0 голосов
/ 30 августа 2009

Если вы тесно связаны с .Net: SQL Server Compact будет лучшим выбором.

Если нет, рассмотрите возможность использования: sqlite

...