【问题标题】:Liferay importing millions of data using Service APILiferay 使用 Service API 导入数百万数据
【发布时间】:2015-05-18 13:59:06
【问题描述】:

我有一个旧表,其中包含大约 170 万条记录。我正在使用 Liferay 的服务构建器 api 将这些记录插入到 Liferay 的表中,按照各地的建议使用 Liferay 的服务 api 来处理 Liferay 的表。

最初我使用 (Entity)LocalServiceUtil.getEntities(-1,-1) 来获取所有记录并一一插入,我意识到一次读取 170 万条记录是愚蠢的。

然后我以 5000 的增量从数据库中读取记录。虽然这很有效,但它正在花费自己的时间。有没有其他方法可以更快地完成这个过程?或者不同的 delta 值会解决问题吗?

【问题讨论】:

  • 您是否使用 ServiceBuilder 来访问您的旧表?正如您所说:使用 Liferay 的服务 api 来处理 Liferay 的
  • 是的。我正在为源和目标使用服务构建器。
  • 而目标表是 Liferay 表?
  • 是的。我可以使用 ext-spring.xml 中的配置从外部数据源中提取数据,并使用默认数据源将数据推送到 Liferay。

标签: liferay liferay-service-builder liferay-6.2


【解决方案1】:

确实应该使用API​​来访问Liferay的数据库。

但重要的是要知道为什么要这样做:

  • 因为数据库布局未记录在案,并且可能会在次要版本之间更改,恕不另行通知。
  • 因为您可能会忽略导致虚假错误的隐式约束。
  • 因为更改正在运行的 Liferay 门户的数据库可能会导致错误的缓存条目。

但如果这些都不适用,因为

  • 您正在填写您的实体的表格(您知道确切的布局)并且
  • 您停止了正在运行的 Liferay 门户

那么您可以使用数据库的功能进行批量操作,而不是使用您的服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2020-03-07
    • 2018-03-04
    相关资源
    最近更新 更多