2015-05-18 2 views
0

У меня есть таблица устаревших записей с 1,7 миллионами записей. Я использую Liferay's service builder api, чтобы вставить эти записи в таблицу Liferay в соответствии с предложением повсюду использовать api для Liferay для работы с таблицами Liferay.Liferay импортирует миллионы данных, используя Service API

Первоначально я использовал (Entity) LocalServiceUtil.getEntities (-1, -1), чтобы извлекать все записи и вставлять один за другим, что я понял - глупость читать 1,7 миллиона записей за один раз.

Затем я прочитал записи из базы данных в дельтах 5000. Хотя это работает, оно берет свое собственное сладкое время. Есть ли другой способ ускорить этот процесс? Или другое решение дельта решит проблему?

+0

Вы используете ServiceBuilder для доступа к своей старой таблице? Как вы говорите: _use Liferay's api для работы с ** таблицами Liferay ** –

+0

Да. Я использую построитель услуг как для источника, так и для назначения. –

+0

И таблица назначения - таблица Liferay? –

ответ

0

Это правда, что вы должны использовать API для доступа к базе данных Liferay.

Но важно знать, почему вы должны это сделать:

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

Но если ни один из них не применяется, потому что

  • вы заполнение таблицы ваших лиц (где вы знаете точное расположение) и
  • вы остановили работу Liferay портала

, то вы можете использовать функции своей базы данных для массовых операций вместо использования вашей службы.