我有大约2100000行的数据。完全导入所需的时间约为2分钟。对于表I中的任何更新,使用delta导入来索引更新。 delta导入所需的时间为6分钟。
考虑到效率方面,最好是完全导入而不是delta导入。那么,delta导入的需求是什么?有没有更好的方法来使用delta导入来提高效率?
我按照documentation中的步骤进行操作。
数据-config.xml中
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.dbschema.CassandraJdbcDriver" url="jdbc:cassandra://127.0.0.1:9042/test" autoCommit="true" rowLimit = '-1' batchSize="-1"/>
<document name="content">
<entity name="test" query="SELECT * from person" deltaImportQuery="select * from person where seq=${dataimporter.delta.seq}" deltaQuery="select seq from person where last_modified > '${dataimporter.last_index_time}' ALLOW FILTERING" autoCommit="true">
<field column="seq" name="id" />
<field column="last" name="last_s" />
<field column="first" name="first_s" />
<field column="city" name="city_s" />
<field column="zip" name="zip_s" />
<field column="street" name="street_s" />
<field column="age" name="age_s" />
<field column="state" name="state_s" />
<field column="dollar" name="dollar_s" />
<field column="pick" name="pick_s" />
</entity>
</document>
答案 0 :(得分:0)
设置增量索引的常用方法(与您一样)运行2个查询而不是单个查询。因此,在某些情况下,它可能不是最佳的。
我更喜欢设置delta like this,因此需要维护单个查询,它更干净,并且delta在单个查询中运行。你应该尝试一下,它可能会改善一些事情。缺点是删除,你要么做一些软删除,要么仍然需要通常的delta配置(我赞成第一个)。
当然,还要确保last_modified列已正确编入索引。我不熟悉Cassandra jdbc驱动程序,你应该仔细检查。
最后,如果您使用的是Datastax Entreprise Edition,则可以通过Solr进行查询(如果已配置)。在这种情况下,您还可以尝试索引SolrEntityProcessor并使用一些请求参数技巧,您也可以执行完整和delta索引。我过去成功地使用过它。