To answer my own question…

 

I have a zebraidx running on 461MB (or 77000 records) and it’s only using 2% of memory on a 4GB system, so I’m thinking it is using a stream reader and updating the shadow files on disk as it goes through the massive MARC file.

 

In that case, while it might be slow to export records to that file, zebraidx probably does read 1 large file much faster than many small files.

 

David Cook

Systems Librarian

Prosentient Systems

72/330 Wattle St

Ultimo, NSW 2007

Australia

 

Office: 02 9212 0899

Direct: 02 8005 0595

 

From: koha-devel-bounces@lists.koha-community.org [mailto:koha-devel-bounces@lists.koha-community.org] On Behalf Of David Cook
Sent: Monday, 4 February 2019 5:10 PM
To: 'Koha Devel' <koha-devel@lists.koha-community.org>
Cc: tomascohen@theke.io
Subject: [Koha-devel] zebraidx with 1 large MARC file rather than many small MARC files

 

Hi all,

 

I haven’t looked into it too deeply, but I was curious if Zebra would have better performance indexing with 1 large MARC file versus many small MARC files.

 

At the moment, we generate 1 huge MARC file and then pass that to zebraidx as an argument.

 

Is that something we’ve always done or was it done as a performance enhancement?

 

I haven’t looked at the Zebra internals to see whether it reads the entire file into memory and then processes it or if it parses the XML using a stream reader. Zebraidx can also take a list of files from stdin*, but if you had tonnes of small files that could be troublesome.

 

I suppose it doesn’t matter too much as we march on to ElasticSearch, but I figure lots of people are using Zebra still and probably will for a long time, so perhaps worth thinking about.

 

https://software.indexdata.com/zebra/doc/zebraidx.html

 

David Cook

Systems Librarian

Prosentient Systems

72/330 Wattle St

Ultimo, NSW 2007

Australia

 

Office: 02 9212 0899

Direct: 02 8005 0595