Назад | Перейти на главную страницу

Есть ли способ связать СУБД с необработанным блоком памяти или двоичными файлами

Я пытаюсь передать numerical matrix operations library как LAPACK с любым DBMS.

Это возможно send/receive полные матрицы как двоичные или как прямые указатели памяти для их обработки (это будет что-то вроде: внешняя библиотека обрабатывает данные, хранящиеся в СУБД, затем вычисляет некоторые огромные матричные данные, а затем через блок памяти или двоичную СУБД получает результат из библиотеки )?

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

* Is it possible that Oracle, SQL Server, MySQL support this technique?.

Oracle поддерживает матричные операции, включая команды, совместимые с LAPACK.

Взгляните на пакет Oracle UTL_NLA чтобы дать вам отправную точку. Я думаю, вам лучше либо использовать инструменты базы данных, либо полностью отказаться от базы данных - способ, которым вы, похоже, хотите подойти, ну, на самом деле, это не РСУБД.

Вы можете сохранить копию данных в кеше локально, чтобы избежать другой передачи, если она не изменилась с момента последнего доступа. Это будет закодировано полностью вне СУБД.

Нет, невозможно, неразумно. Данные БД являются транзакционными, а использование совместной памяти с операциями - это настоящий ад. Определенно не "обработка указателей вокруг". Возможно, но тогда вам потребуется, чтобы клиентские библиотеки были ОЧЕНЬ хорошими / находились под контролем ИЛИ выполняли много накладных расходов, а это означает, что больше не нужно идти.

Похоже, у вас довольно много требований, которые не совпадают. РСУБД, стандартные продукты, не оптимизированы для вашего типа работы.

Лучшее, что вы могли бы сделать, это:

  • Храните файлы в BLOBS.
  • Использовать SQL Server
  • Используйте хранилище больших двоичных объектов на основе ФАЙЛОВ

Тогда вы можете получить доступ к BLOB-объектам через файловый ресурс, который должен разрешать файлы с отображением памяти. Не экспортировать - это файлы. Каждая фиксация создает новую копию с другим именем. Вы получаете имена в sql из базы данных (это GUID).

Возможно, это наиболее эффективный способ справиться с этим.