Совместное использование данных между приложениями — совместное использование памяти, D-Bus и работа с файлами.

Рассмотрим сценарий, в котором два приложения должны обмениваться данными между собой. Я могу придумать три способа-

  1. Общая память (Boost мне разрешено использовать)
  2. D-Bus (разрешена реализация glib/Qt)
  3. Файловые операции над общим файлом между двумя приложениями.

Q1. Каким должен быть мой подход, учитывая, что данные для обмена будут очень большими (например, несколько названий песен 10K).

Q2. Повлияет ли выполнение операции с файлом на скорость по сравнению с другими, поскольку будет задействован жесткий диск?

Q3. Есть ли другой доступный подход с большей скоростью?

Язык реализации - C++


person Amit Tomar    schedule 22.12.2011    source источник


Ответы (1)


Вы можете рассмотреть возможность использования модуля QtSql для использования базы данных, в частности SQLite.

База данных SQLite — это кросс-платформенный внутрипроцессный движок базы данных. Это позволяет легко хранить структурированные данные и одновременно и безопасно получать к ним доступ между процессами, процессы даже могут быть написаны на разных языках.

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

Другое преимущество использования QtSql заключается в том, что в будущем вы сможете легко заставить программы работать в сети, используя сервер базы данных, такой как PostgreSQL или MySQL.

person Silas Parker    schedule 22.12.2011
comment
Спасибо за ответ. Но из-за некоторых ограничений проекта я не смогу использовать SQLite. Если бы кто-то мог выбрать лучший подход из вариантов, приведенных выше? - person Amit Tomar; 26.12.2011