Какой будет рекомендуемая модель базы данных Java в этом случае?

Я написал приложение, которое обрабатывает видео (720*576 пикселей, 30 кадров в секунду, формат RGB), используя OpenCVформат Java. Я вычисляю только 5 переменных int в результате обработки каждого кадра. Я хотел бы сохранить эти 5 переменных int с текущим кадром в наборе данных, и поэтому мне нужно делать это несколько раз в секунду (30 раз в секунду было бы идеально, но я мог бы сделать меньше, сгруппировав данные, я думаю ...).

Какой будет правильный выбор базы данных для такой вещи? Я подумал HDF5, будет ли это подходящим решением?

Ответы (2)

Почти все будет работать.

Проблема «30 раз в секунду» должна быть в пределах возможностей любого формата файла базы данных или набора данных. Если есть проблемы с отслеживанием, их можно решить:

  • путем группирования вставок (для базы данных или библиотеки доступа),

  • путем записи в буферизованный поток или

  • используя очередь в памяти и отдельные потоки Java для обработки кадров и сохранения извлеченных данных. (Предполагая, что вы обрабатываете кадры в режиме реального времени.)

Я бы выбрал базу данных/библиотеку/формат, основываясь на других вещах, которые вы хотите. Производительность не должна быть проблемой для того, что вы предлагаете сделать.

Вы можете легко (в большинстве современных систем) записать 5 целочисленных значений 4 запятых и перевести строку в файл на жестком диске со скоростью 30 операций записи в секунду и с гораздо меньшими накладными расходами, чем БД. Попробуйте сделать это проще и записать в CSV-файл — большинство баз данных могут без проблем импортировать из CSV-файла, если он понадобится вам позже в базе данных.

да, однако я также хотел добавить текущий обработанный кадр, а это значит, что я бы поставил 720 * 576 * 3 = 1244160 переменных с плавающей запятой + 5 переменных int при 30 операциях записи в секунду ... Ваш ответ все еще остается в силе в этом случае, или сделать Вы думаете, что мне нужно альтернативное решение?