2012-03-12 3 views
1

Я работаю над приложением Play (1.2.4), которое будет делать хруст в журналах. Это не типичная вещь, для которой будет использоваться фрейм (в основном я, вероятно, буду единственным пользователем), но так быстро проверить идею, что я решил использовать ее.Play framework - загрузка данных из внешней базы данных

Я буду загружать множество различных событий и связанных с ними учетных записей, хранящихся в журнале (базе данных) отдельного приложения, хранить их в локальной базе данных, а затем выполнять корреляцию между событиями. До сих пор я просто загружал журналы в файл и импортировал их в базу данных, но он неуклюжий, медленный, подверженный ошибкам, и файлы становятся довольно большими при расширении таймфрейма.

Я хотел бы узнать, как получить доступ для чтения к двум внешним базам данных, запускать запросы и затем создавать локально хранимые объекты в локальной базе данных. Обе внешние базы данных имеют разные схемы, и, разумеется, локальные разные. Соединение необходимо только во время импорта, и поскольку таблицы, в которые я импортирую данные, содержат много столбцов, из которых мне просто нужно несколько (а серверы находятся далеко), я бы предпочел запросить только столбцы I необходимость. Я в порядке с непосредственным созданием моделей, хранящихся локально непосредственно из набора результатов, поэтому мне не нужно даже определять модели на основе внешней базы данных. Мне также может потребоваться извлечь данные из внешней базы данных A на основе данных, которые я получаю из базы B (например, когда строка журнала содержит пользователя, который я не хранил локально, извлекайте его данные с другого сервера перед сохранением события). Связи нужны только во время импорта, что теоретически является одноразовым событием. Также большой бонус будет возможность настройки параметров источников данных без перезагрузки (например, сохранение хоста/порта в локальной базе данных и чтение значений перед запуском импорта).

Большинство потоков, которые я нахожу в использовании нескольких БД, похоже, связаны с уменьшением нагрузки путем распространения данных с помощью той же схемы в нескольких экземплярах. Я нашел некоторые темы о том, что у вас есть отдельные базы данных с другой схемой, но не мог понять, насколько хорошо решения будут адаптироваться к моим потребностям. Любая обратная связь будет оценена.

ответ

2

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

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

Если это импорт с одним ударом, вы можете захотеть написать инструмент переноса, чтобы сделать это, и сосредоточьте основное внимание на своей дневной работе. Вы можете совместно использовать модель БД между вашим основным приложением и вашим приложением миграции, и поэтому напишите приложение миграции с помощью Play. Мы сделали это в предыдущем проекте, и это сработало очень хорошо.

+0

Спасибо, это сработало хорошо. Я понимаю, что инструмент миграции будет работать хорошо, но я хочу, чтобы возможность получать данные довольно динамично, поэтому сначала забирайте месяц, а когда все работает так, как я хочу, вы получите еще больше. Также я думаю о том, чтобы получать некоторые данные «на лету» только тогда, когда мне это нужно. Я просто создал JDBC, который, кажется, работает отлично. – kamina