Рекомендация по БД - Portable, Concurrent (только для чтения, одна запись) - PullRequest
0 голосов
/ 21 февраля 2020

Я ищу портативное решение для базы данных, которое можно использовать с веб-сайтом, предназначенным для обслуживания сервисных сбоев. Мне нужно еженедельно получать список пользователей с сервера SQL и сохранять их данные в переносимой базе данных. Это примерно 250 000 пользователей (и их число растет), и у каждого, вероятно, есть 25 полей, которые необходимо заполнить. Я бы сказал, что из этих полей нужно искать менее 5. Остальные просто нуждаются в извлечении.

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

Веб-сайт будет. Net Core web api, поэтому к нему будут обращаться несколько пользователей в нескольких потоках. Веб-сайт будет нуждаться только в доступе для чтения, он не будет обновлять эти данные вообще.

Чтобы поддерживать портативную базу данных в актуальном состоянии, я думаю о том, чтобы иметь другое приложение, которое просто запускается ночью обновить данные. Наш бизнес длится 24 часа (хотя и тише в одночасье), поэтому существует вероятность того, что этот модуль обновления используется во время использования веб-сайта. Несмотря на то, что отключение службы предполагает, что сервер SQL не работает, это может быть не так. Есть и другие факторы, которые могут вызвать то, что мы бы назвали перебоями. Это будет единственное программное обеспечение, обновляющее базу данных.

Я пытался использовать LiteDB, но я не мог заставить его работать так, чтобы это соответствовало моим требованиям к параллелизму. Казалось, что он сделал часть работы, и его было легко запустить. Тем не менее, я часто сталкивался с заблокированными файлами из-за характера веб-API. Я разработал решение для этого, но тогда приложение для обновления не смогло получить доступ к файлу базы данных.

У кого-нибудь есть рекомендации, на которые я могу обратить внимание?

1 Ответ

1 голос
/ 21 февраля 2020

Учитывая описание проблемы (1 таблица, 250 тыс. Строк с - я полагаю, - относительно быстрым темпом роста) и требований, я не думаю, что вам нужна реляционная база данных.

I не думайте, что базы данных sql или, точнее, ориентированные на документы базы данных более приспособлены для удовлетворения ваших требований. Есть много вариантов: Mon go, Cassandra, CouchDB, ... выбор за вами.

Лично у меня есть некоторый опыт работы с ElasticSearch (https://www.elastic.co/elasticsearch), что довольно прост в освоении, переносим (работает на Linux, Windows, Containers и т. д. c ...), масштабируем и быстр. Я имею в виду, действительно, очень быстро, вы можете получить результаты за 10-20 миллисекунд (иногда даже меньше).

Пакет NEST nuget действует как клиент высокого уровня для работы с ElasticSearch (* 1011). *)

...