Рекомендации по технологии баз данных для симулятора

Итак, я разрабатываю приложение для моделирования, и мне нужно знать, какая база данных рекомендуется (или плюсы некоторых вариантов).

тл;др:

  • Приложение С#
  • Только приложение будет использовать его
  • только локальная машина (будет сервером)
  • 4-2000 потенциальных «версий» базы данных, созданных одновременно.
  • Данные не нужно хранить за пределами запущенного приложения.

Полная информация:

  • Приложение C#, которое будет единственным «пользователем» базы данных. (Так что он должен быть доступен только локально)
  • Не нужно предоставлять «выход» базы данных реальным пользователям, только приложение.
  • Имитирует 500 000++ "узлов"
  • прибл. Соотношение чтения/записи 30/70.
  • Необходимо создать несколько различных симуляций и потенциально разделить одну симуляцию на 2 симуляции, каждая из которых проверяет определенные критерии. Каждая «симуляция», вероятно, должна быть отдельной базой данных (или, возможно, можно будет использовать представления).
  • Необходимо иметь возможность создавать базу данных (или представления/таблицы/моделирование) на лету.
  • Нужно только действительно хранить «состояние» симуляции, что означает несколько полей (строка/целое число и т. д.) для каждого узла. Это означает, что нам нужно поддерживать исторические состояния объекта.
  • Моделирование управляется событиями, поэтому результат определяется скоростью процессора.
  • Одновременно может быть запущено от 4 до 2000 симуляций.

Некоторые из основных, на которые я обращал внимание, — это SQLLite и SQL Server, однако это в большей степени основано на опыте моих коллег по оказанию поддержки. Одним из других факторов, которые мы рассматриваем, является работа базы данных в памяти.

Во всяком случае, достаточно с меня. Что вы порекомендуете, или каковы плюсы и минусы доступных вариантов? О, и любые вопросы для более подробной информации, пожалуйста, стреляйте.

РЕДАКТИРОВАТЬ: В соответствии с запросом здесь приведено некоторое чрезвычайно оцененное количество входных данных в секунду:введите описание изображения здесь

Методология: я запускаю прототип моделирования в течение 5 минут, чтобы определить, сколько переменных каждого типа мы используем, а затем делю это на 300, чтобы получить значение переменных в секунду. Затем я умножил на 4, потому что я ожидаю, что данные, которые мы хотим сохранить, вырастут в 4 раза (потенциально немного консервативно в долгосрочной перспективе).

«Каждая «симуляция», вероятно, должна быть отдельной базой данных». Постарайтесь избежать этого, это гораздо больше хлопот, чем просто правильно определить структуру вашей таблицы и иметь все это в одной БД.
Из ваших требований я не совсем понимаю, сколько данных за сколько времени нужно читать/записывать (одновременно). Даже если процессор ограничен, оценка будет хорошей. Можете ли вы отредактировать и добавить это? Судя по вашим цифрам, я бы исключил SQLite, вам нужно что-то потяжелее.
@JanDoggen Сегодня я проведу несколько тестов, чтобы попытаться оценить, сколько данных будет записано/прочитано. Но почему SQLLite не подходит для такого объема данных?

Ответы (1)

Я использую PostgreSQL (базу данных с открытым исходным кодом) в своем настольном приложении VB.NET.


Я думаю, вам нужна встроенная база данных для использования в приложении, Microsoft SQL Server Compact, если вы не хотите ничего устанавливать на стороне пользователя.

Встроенный Firebird

Firebird Embedded — это механизм реляционной базы данных. Это ответвление InterBase с открытым исходным кодом, совместимое с ACID, поддерживающее триггеры и хранимые процедуры и доступное в системах Linux, OSX и Windows. Он имеет те же функции, что и классическая версия Firebird и версия для суперсервера, два или более потока (и приложения) могут одновременно обращаться к одной и той же базе данных, начиная с Firebird 2.5. Таким образом, встроенный Firebird действует как локальный сервер для одного многопоточного клиента, обращающегося к его базам данных (это означает, что он правильно работает для веб-приложений ASP.NET, поскольку там у каждого пользователя есть свой собственный поток, а это означает, что два пользователя могут получить доступ к одной и той же базе данных в одно и то же время). время, но они не будут находиться в одном потоке, поскольку ASP.NET открывает новый поток для каждого пользователя). Он экспортирует стандартные точки входа API Firebird.

VistaDB

VistaDB — это встроенная база данных SQL, полностью написанная на C# и поддерживающая ряд функций, делающих ее совместимой с SQL Server, таких как типы данных и синтаксис T-SQL. Продукт работает на платформах .NET, включая Mono. Он существует на рынке с 2004 года и используется многими компаниями.

пройти через встроенную базу данных для других вариантов