Voor uitgebreide analyses kan het wenselijk zijn om de volledige dataset van 6 miljoen bekendmakingen uit KOOP (NL) Officiele Publicaties naar een eigen database over te halen. Dit topic beschrijft een voorbeeld.
settings.xml
Online
Maak een database met twee datacontainers: de doeldatabase zoals SQL Server en KOOP (NL) Officiele Publicaties.
On-premises
Maak een settings*.xml
-bestand in %USERPROFILE%\Invantive
, bijvoorbeeld settings-koop.xml
. Definieer hierin een database met twee datacontainers, bijvoorbeeld als:
<?xml version="1.0" encoding="utf-16"?>
<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
VersionUpdateDate="2020-09-04T16:38:36.5624324Z"
version="5">
<group
name="SAMPLE"
id="4641e4ce-4049-406a-9959-bd405da7d5d0"
sortingOrder="0"
>
<connection
name="Sample"
manual="true"
authentication="Default"
sortingOrder="20"
id="2361f257-8a0e-4d7b-b234-8032abf91eff">
<database
order="10"
comment="PostgreSQL"
alias="oa"
provider="PostgreSql"
userLogonCodeMode="Hidden"
passwordMode="Hidden"
connectionString="Server=8.8.8.8;Database=sample;User Id=sample;Password=secret"
AllowConnectionStringRewrite="false"
/>
<database
order="20"
provider="KoopNlOfficielePublicaties"
alias="op"
userLogonCodeMode="Hidden"
passwordMode="Hidden"
AllowConnectionPooling="false" />
</connection>
</group>
</settings>
Doeltabel
Gebruik het volgende statement om een lege tabel met de gewenste structuur te maken:
create or replace table OAKoopOpEntries@oa
as
select *
from Entries@op
where false
Vervolgens worden per week van de wijzigingsdatum de bekendmakingen geladen:
set use-http-disk-cache@op true
set http-disk-cache-max-age-sec@op 2592000
begin
for r
in
( select day_date
from Calendar@DataDictionary
where day_date >= to_date('20140101', 'YYYYMMDD')
and day_date <= trunc(sysdateutc)
and DAY_IN_WEEK = 1
order
by day_date
)
loop
dbms_output.put_line('Load ' || to_char(r.day_date, 'YYYYMM') || '.');
bulk insert into OAKoopOpEntries@oa
select null rowid$
, t.*
from Entries@op t
where t.Modified >= r.day_date
and t.Modified < r.day_date + 7
;
dbms_output.put_line('Processed ' || to_char(sqlrowcount) || ' rows.');
end loop;
end;
Het laden duurt circa 24 uur voor de initiele laadactie.
Vervolgens kan gewisseld worden naar incrementeel laden voor alleen gewijzigde bekendmakingen op basis van Modified
datum of de Events
-tabel. Per dag is het datavolume circa 1.000 nieuwe bekendmakingen.
Toevoegen Externe Documenten
Het is mogelijk om ook externe documenten toe te voegen. Dit staat beschreven in Externe documenten opzoeken bij Officele Bekendmakingen.
De verwerkingsduur kan echter enorm zijn aangezien in principe voor elke bekendmaking twee HTTP-verzoeken nodig zijn:
- een HTTP-verzoek nodig is om de lijst van externe bijlages op te vragen
- een HTTP-verzoek om de lijst van eventuele documenten op te vragen
Zelfs bij een doorlopende verwerkingssnelheid van 32 HTTP-verzoeken per seconde duurt het minimaal 4 dagen voor de initiele laadactie.
De verwerkingsduur kan ingeperkt worden door deze opvragingen enkel te doen voor bepaalde vormen van bekendmakingen.
Vervolgens kan gewisseld worden naar incrementeel laden voor alleen gewijzigde bekendmakingen op basis van Modified
datum of de Events
-tabel. Per dag is het datavolume circa 1.000 nieuwe bekendmakingen, zodat er circa 2.000 HTTP-verzoeken nodig zijn om de documenten te achterhalen.
Het daadwerkelijk opvragen van de documenten zal in het algemeen beduidend sneller zijn. Ook momenteel worden aan relatief weinig bekendmakingen documenten toegevoegd, terwijl dit voorheen nog minder was.