Хранение файлов или записей в базе данных? Java и Python - PullRequest
0 голосов
/ 11 апреля 2010

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

Я использую инфраструктуру для создания, обучения и опроса сетей. Это использует Java. Каркас имеет постоянство для сохранения сети в файл XML.

Как лучше всего хранить эти файлы? Я вижу несколько потенциальных идей, но мне нужна помощь в выборе лучшего:

  1. Сохраните каждую сеть в отдельный файл XML с именем, которое хранится в базе данных. Загрузите это каждый раз.
  2. Сохраните все сети в один и тот же XML-файл, причем каждая сеть имеет свое имя, которое хранится в базе данных.
  3. Каким-то образом передать то, что обычно записывается в файл XML, на сайт Django для записи в базу данных. Это необходимо будет вернуть в код Java, когда необходимо сделать прогноз.

Я могу сделать 1 или 2, но я думаю, что их производительность будет весьма ограничена, и я сейчас на виртуальном хостинге, так что я не знаю, насколько они были бы довольны тысячами файлов. Кроме того, после добавления нескольких тысяч записей в один XML-файл я заметил значительный удар по производительности при сохранении в нем.

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

Однако для использования в структуре нейронной сети ( Encog ), которую я использую для сохранения в файл, необходим доступ к объекту Java-файла, а не строка, которую можно сохранить в базе данных. Если здесь нет какой-то магии Java (я знаю очень мало Java), то единственный способ увидеть это - использовать временные файлы, но я не знаю, является ли это правильным способом.

Буду признателен за любые идеи о том, как наилучшим образом реализовать любую из 3 вышеупомянутых идей или любые альтернативы. Спасибо!

Обновление: Поговорив с моим Боссом, мы оба согласились, что идея 3 - лучшая. Это похоже на «правильный» способ сделать это. Я надеюсь, что кто-то может помочь нам в этом. Спасибо.

1 Ответ

0 голосов
/ 13 апреля 2010

Я думаю, что у меня есть лучшее решение, и поскольку никто не ответил, это то, с чем я пойду на данный момент.

Я создаю временный файл на Java и использую его для сохранения данных. Затем, перед выходом, я читаю этот файл и выводю его на стандартный вывод, чтобы код Python мог взять его и сохранить в базе данных. К счастью, это всегда одинаковый размер, поэтому я могу ограничить количество символов в поле базы данных до 3500.

Если кто-то найдет лучшее решение, пожалуйста, прокомментируйте, чтобы сказать мне, но на данный момент это то, что я буду использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...