Wiki source code of Architecture
Last modified by Mikko Heikkinen on 2024/02/02 14:08
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | Enterprise architecture (//operating model// for leadership) exists in Finnish only. | ||
2 | |||
3 | Julkisen hallinnon kokonaisarkkitehtuuri (JHKA) on rakenne, jonka avulla koordinoidaan ja kehitetään hallinnon organisaatioiden ja palveluiden välistä yhteentoimivuutta. Kokonaisarkkitehtuuri tukee johtamista, strategian toimeenpanoa, toiminnan ja palvelujen jatkuvaa kehittämistä, muutosten ja monimutkaisuuden hallintaa, digitalisaation hallittua hyödyntämistä sekä yhteentoimivuutta. | ||
4 | |||
5 | Lajitietokeskuksen kokonaisarkkitehtuuri on kuvattu täällä: [[https:~~/~~/laji.fi/about/1357>>url:https://laji.fi/about/1357||shape="rect"]] | ||
6 | |||
7 | = System architecture = | ||
8 | |||
9 | Architecture from point of view of services and systems. | ||
10 | |||
11 | The image bellow shows some (but not all) FinBIF services and some of their relationships with each other and the user. | ||
12 | |||
13 | [[image:attach:architecture2021-05-26.png]] | ||
14 | |||
15 | Key services, systems and components | ||
16 | |||
17 | (% class="relative-table wrapped" style="width:99.9384%" %) | ||
18 | |=((( | ||
19 | Name | ||
20 | )))|=((( | ||
21 | Type | ||
22 | )))|=(% colspan="1" %)(% colspan="1" %) | ||
23 | ((( | ||
24 | Techniques | ||
25 | )))|=((( | ||
26 | Description | ||
27 | )))|=((( | ||
28 | State | ||
29 | )))|=((( | ||
30 | Repository | ||
31 | )))|=((( | ||
32 | Documentation | ||
33 | ))) | ||
34 | |((( | ||
35 | [[API.LAJI.FI>>url:https://api.laji.f||shape="rect"]] | ||
36 | )))|((( | ||
37 | HTTP-API, | ||
38 | |||
39 | Web-UI | ||
40 | )))|(% colspan="1" %)(% colspan="1" %) | ||
41 | ((( | ||
42 | Loopback node.js framework | ||
43 | |||
44 | Swagger / OpenAPI specification | ||
45 | |||
46 | Swagger UI | ||
47 | )))|((( | ||
48 | api.laji.fi is the "frontend" of other APIs that provide most of it's services behind the scenes. The API also impelements some functionality by itself. | ||
49 | )))|((( | ||
50 | Production, version v0 beta | ||
51 | )))|((( | ||
52 | [[https:~~/~~/bitbucket.org/luomus/lajiapi>>url:https://bitbucket.org/luomus/lajiapi||shape="rect"]] | ||
53 | )))|((( | ||
54 | [[https:~~/~~/api.laji.fi/explorer/>>url:https://api.laji.fi/explorer/||shape="rect"]] | ||
55 | ))) | ||
56 | |(% colspan="1" %)(% colspan="1" %) | ||
57 | ((( | ||
58 | Laji.fi | ||
59 | )))|(% colspan="1" %)(% colspan="1" %) | ||
60 | ((( | ||
61 | Web-UI | ||
62 | )))|(% colspan="1" %)(% colspan="1" %) | ||
63 | ((( | ||
64 | Angular2 JS framework | ||
65 | )))|(% colspan="1" %)(% colspan="1" %) | ||
66 | ((( | ||
67 | Frontend for Laji.fi and its sister sites. | ||
68 | )))|(% colspan="1" %)(% colspan="1" %) | ||
69 | ((( | ||
70 | Production | ||
71 | )))|(% colspan="1" %)(% colspan="1" %) | ||
72 | ((( | ||
73 | [[https:~~/~~/bitbucket.org/luomus/laji.fi-front>>url:https://bitbucket.org/luomus/laji.fi-front||shape="rect"]] | ||
74 | )))|(% colspan="1" %)(% colspan="1" %) | ||
75 | ((( | ||
76 | |||
77 | ))) | ||
78 | |(% colspan="1" %)(% colspan="1" %) | ||
79 | ((( | ||
80 | Laji-Form.js | ||
81 | )))|(% colspan="1" %)(% colspan="1" %) | ||
82 | ((( | ||
83 | Component | ||
84 | )))|(% colspan="1" %)(% colspan="1" %) | ||
85 | ((( | ||
86 | React JS framework | ||
87 | )))|(% colspan="1" %)(% colspan="1" %) | ||
88 | ((( | ||
89 | Laji-form is responsible for creating forms of Vihko Notebook. | ||
90 | )))|(% colspan="1" %)(% colspan="1" %) | ||
91 | ((( | ||
92 | Production | ||
93 | )))|(% colspan="1" %)(% colspan="1" %) | ||
94 | ((( | ||
95 | [[https:~~/~~/bitbucket.org/luomus/laji-form.js>>url:https://bitbucket.org/luomus/laji-form.js/src||shape="rect"]] | ||
96 | |||
97 | [[https:~~/~~/bitbucket.org/luomus/forms>>url:https://bitbucket.org/luomus/forms||shape="rect"]] | ||
98 | )))|(% colspan="1" %)(% colspan="1" %) | ||
99 | ((( | ||
100 | |||
101 | ))) | ||
102 | |(% colspan="1" %)(% colspan="1" %) | ||
103 | ((( | ||
104 | Laji-Form | ||
105 | )))|(% colspan="1" %)(% colspan="1" %) | ||
106 | ((( | ||
107 | Component | ||
108 | )))|(% colspan="1" %)(% colspan="1" %) | ||
109 | ((( | ||
110 | PHP | ||
111 | )))|(% colspan="1" %)(% colspan="1" %) | ||
112 | ((( | ||
113 | ?? | ||
114 | )))|(% colspan="1" %)(% colspan="1" %) | ||
115 | ((( | ||
116 | Production | ||
117 | )))|(% colspan="1" %)(% colspan="1" %) | ||
118 | ((( | ||
119 | [[https:~~/~~/bitbucket.org/luomus/laji-form>>url:https://bitbucket.org/luomus/laji-form||shape="rect"]] | ||
120 | )))|(% colspan="1" %)(% colspan="1" %) | ||
121 | ((( | ||
122 | [[https:~~/~~/bitbucket.org/luomus/laji-form>>url:https://bitbucket.org/luomus/laji-form||shape="rect"]] | ||
123 | ))) | ||
124 | |(% colspan="1" %)(% colspan="1" %) | ||
125 | ((( | ||
126 | Laji-Map | ||
127 | )))|(% colspan="1" %)(% colspan="1" %) | ||
128 | ((( | ||
129 | Compontent | ||
130 | )))|(% colspan="1" %)(% colspan="1" %) | ||
131 | ((( | ||
132 | Javascript | ||
133 | )))|(% colspan="1" %)(% colspan="1" %) | ||
134 | ((( | ||
135 | Laji-Map is build on top of Leaflet map library and provides map services used by laji.fi, Vihko Notebook, etc. | ||
136 | )))|(% colspan="1" %)(% colspan="1" %) | ||
137 | ((( | ||
138 | Production | ||
139 | )))|(% colspan="1" %)(% colspan="1" %) | ||
140 | ((( | ||
141 | [[https:~~/~~/bitbucket.org/luomus/laji-map.js>>url:https://bitbucket.org/luomus/laji-map.js||shape="rect"]] | ||
142 | )))|(% colspan="1" %)(% colspan="1" %) | ||
143 | ((( | ||
144 | |||
145 | ))) | ||
146 | |(% colspan="1" %)(% colspan="1" %) | ||
147 | ((( | ||
148 | LajiStore | ||
149 | )))|(% colspan="1" %)(% colspan="1" %) | ||
150 | ((( | ||
151 | HTTP-API | ||
152 | )))|(% colspan="1" %)(% colspan="1" %) | ||
153 | ((( | ||
154 | PHP | ||
155 | )))|(% colspan="1" %)(% colspan="1" %) | ||
156 | ((( | ||
157 | Provides JSON storage for example for Vihko Notebook (used via api.laji.fi) | ||
158 | )))|(% colspan="1" %)(% colspan="1" %) | ||
159 | ((( | ||
160 | Production | ||
161 | )))|(% colspan="1" %)(% colspan="1" %) | ||
162 | ((( | ||
163 | [[https:~~/~~/bitbucket.org/luomus/lajistore-api>>url:https://bitbucket.org/luomus/lajistore-api||shape="rect"]] | ||
164 | )))|(% colspan="1" %)(% colspan="1" %) | ||
165 | ((( | ||
166 | |||
167 | ))) | ||
168 | |(% colspan="1" %)(% colspan="1" %) | ||
169 | ((( | ||
170 | Laji-DW | ||
171 | )))|(% colspan="1" %)(% colspan="1" %) | ||
172 | ((( | ||
173 | HTTP-API | ||
174 | |||
175 | Web-UI | ||
176 | )))|(% colspan="1" %)(% colspan="1" %) | ||
177 | ((( | ||
178 | Java, Freemarker, jQuery | ||
179 | )))|(% colspan="1" %)(% colspan="1" %) | ||
180 | ((( | ||
181 | Data Warehouse system provides ETL processes for observation, taxonomy, quality annotation data. It provides API for observation data primary sources to push data to the warehouse and "Pull readers" that read observation data from primary sources. It also implements several customized methods to fetch observation data from primary sources. Laji-DW provides query API that is used through [[api.laji.fi>>url:http://api.laji.fi||shape="rect"]] /warehouse endpoint. Finally it provides a management console for admins and citation viewer for performed observation data file downloads. | ||
182 | )))|(% colspan="1" %)(% colspan="1" %) | ||
183 | ((( | ||
184 | Production | ||
185 | )))|(% colspan="1" %)(% colspan="1" %) | ||
186 | ((( | ||
187 | [[https:~~/~~/bitbucket.org/luomus/laji-etl>>url:https://bitbucket.org/luomus/laji-etl/src||shape="rect"]] | ||
188 | )))|(% colspan="1" %)(% colspan="1" %) | ||
189 | ((( | ||
190 | |||
191 | ))) | ||
192 | |(% colspan="1" %)(% colspan="1" %) | ||
193 | ((( | ||
194 | Laji-Auth | ||
195 | )))|(% colspan="1" %)(% colspan="1" %) | ||
196 | ((( | ||
197 | HTTP-API | ||
198 | |||
199 | Web-UI | ||
200 | )))|(% colspan="1" %)(% colspan="1" %) | ||
201 | ((( | ||
202 | Java Jersey | ||
203 | )))|(% colspan="1" %)(% colspan="1" %) | ||
204 | ((( | ||
205 | [[login.laji.fi>>url:https://login.laji.fi||shape="rect"]] provides authentication methods for FinBIF services. | ||
206 | )))|(% colspan="1" %)(% colspan="1" %) | ||
207 | ((( | ||
208 | Production | ||
209 | )))|(% colspan="1" %)(% colspan="1" %) | ||
210 | ((( | ||
211 | [[https:~~/~~/bitbucket.org/luomus/laji-auth>>url:https://bitbucket.org/luomus/laji-auth||shape="rect"]] | ||
212 | )))|(% colspan="1" %)(% colspan="1" %) | ||
213 | ((( | ||
214 | |||
215 | ))) | ||
216 | |((( | ||
217 | Laji-Backend | ||
218 | )))|((( | ||
219 | HTTP-API | ||
220 | )))|(% colspan="1" %)(% colspan="1" %) | ||
221 | ((( | ||
222 | Java | ||
223 | )))|((( | ||
224 | Internal API that provides some functionalities of api.laji.fi, for example /news, /information, taxon search and api related features. | ||
225 | )))|((( | ||
226 | Production, internal use only | ||
227 | |||
228 | (Will be partially phased out) | ||
229 | )))|((( | ||
230 | [[https:~~/~~/bitbucket.org/luomus/laji.fi-backend>>url:https://bitbucket.org/luomus/laji.fi-backend||shape="rect"]] | ||
231 | )))|((( | ||
232 | |||
233 | ))) | ||
234 | |((( | ||
235 | Triplestore-API | ||
236 | )))|((( | ||
237 | HTTP-API | ||
238 | )))|(% colspan="1" %)(% colspan="1" %) | ||
239 | ((( | ||
240 | Java | ||
241 | )))|((( | ||
242 | Rest HTTP API for managing an querying contents of Triplestore Ontology database, that contains information for example about taxonomy, persons, image metadata, etc. | ||
243 | )))|((( | ||
244 | Production, internal use only | ||
245 | )))|((( | ||
246 | [[https:~~/~~/bitbucket.org/luomus/triplestore>>url:https://bitbucket.org/luomus/triplestore||shape="rect"]] | ||
247 | )))|((( | ||
248 | |||
249 | ))) | ||
250 | |((( | ||
251 | Triplestore Editor | ||
252 | )))|((( | ||
253 | Web-UI | ||
254 | )))|(% colspan="1" %)(% colspan="1" %) | ||
255 | ((( | ||
256 | Java, Freemarker, jQuery | ||
257 | )))|((( | ||
258 | Web UI for managing contents of Triplestore Ontology database for IT-admins. | ||
259 | )))|((( | ||
260 | Production, admin tool | ||
261 | )))|((( | ||
262 | [[https:~~/~~/bitbucket.org/luomus/triplestore>>url:https://bitbucket.org/luomus/triplestore||shape="rect"]] | ||
263 | )))|((( | ||
264 | |||
265 | ))) | ||
266 | |((( | ||
267 | Taxon Editor | ||
268 | )))|((( | ||
269 | Web-UI | ||
270 | )))|(% colspan="1" %)(% colspan="1" %) | ||
271 | ((( | ||
272 | Java, Freemarker, jQuery | ||
273 | )))|((( | ||
274 | Web UI for managing taxonomy content of Triplestore Ontology database. | ||
275 | )))|((( | ||
276 | Production | ||
277 | )))|((( | ||
278 | [[https:~~/~~/bitbucket.org/luomus/triplestore>>url:https://bitbucket.org/luomus/triplestore||shape="rect"]] | ||
279 | )))|((( | ||
280 | |||
281 | ))) | ||
282 | |((( | ||
283 | tun.fi / id redirect servce | ||
284 | )))|((( | ||
285 | HTTP-API | ||
286 | )))|(% colspan="1" %)(% colspan="1" %) | ||
287 | ((( | ||
288 | Java | ||
289 | )))|((( | ||
290 | Provides machine readable and human readable redirect service for HTTP URI Identifiers used by FinBIF for all things such as taxa, observations, persons, areas, collections. [[https:~~/~~/www.w3.org/TR/ld-bp/#HTTP-URIS>>url:https://www.w3.org/TR/ld-bp/#HTTP-URIS||shape="rect"]] | ||
291 | )))|((( | ||
292 | Production | ||
293 | )))|((( | ||
294 | [[https:~~/~~/bitbucket.org/luomus/id>>url:https://bitbucket.org/luomus/id||shape="rect"]] | ||
295 | )))|((( | ||
296 | |||
297 | ))) | ||
298 | |((( | ||
299 | Kotka | ||
300 | )))|((( | ||
301 | Web-UI | ||
302 | )))|(% colspan="1" %)(% colspan="1" %) | ||
303 | ((( | ||
304 | PHP | ||
305 | )))|((( | ||
306 | Kotka collection management system | ||
307 | )))|((( | ||
308 | Production | ||
309 | |||
310 | (will be reimplemented using laji.fi/notebook technologies) | ||
311 | )))|((( | ||
312 | [[https:~~/~~/bitbucket.org/luomus/kotka>>url:https://bitbucket.org/luomus/kotka||shape="rect"]] | ||
313 | )))|((( | ||
314 | |||
315 | ))) | ||
316 | |((( | ||
317 | Pyha | ||
318 | )))|((( | ||
319 | WEB-UI | ||
320 | )))|(% colspan="1" %)(% colspan="1" %) | ||
321 | ((( | ||
322 | Python Django | ||
323 | )))|((( | ||
324 | Data request service that is used to request and provide access to closed/not-coarsed observation data. | ||
325 | )))|((( | ||
326 | Production | ||
327 | )))|((( | ||
328 | [[https:~~/~~/bitbucket.org/luomus/pyha>>url:https://bitbucket.org/luomus/pyha||shape="rect"]] | ||
329 | )))|((( | ||
330 | |||
331 | ))) | ||
332 | |((( | ||
333 | Multimedia-API | ||
334 | |||
335 | |||
336 | )))|((( | ||
337 | HTTP-API | ||
338 | )))|(% colspan="1" %)(% colspan="1" %) | ||
339 | ((( | ||
340 | Java, Imagemagick | ||
341 | )))|((( | ||
342 | Provides HTTP API to post images (in future audio, videos?) and their metadata and to query images. Converts thumbnails etc. Used by api.laji.fi. | ||
343 | )))|((( | ||
344 | Production | ||
345 | )))|((( | ||
346 | [[https:~~/~~/bitbucket.org/luomus/kuvapalvelu-server>>url:https://bitbucket.org/luomus/kuvapalvelu-server||shape="rect"]] | ||
347 | )))|((( | ||
348 | |||
349 | ))) | ||
350 | |((( | ||
351 | Image-Storage | ||
352 | )))|((( | ||
353 | Web server | ||
354 | )))|(% colspan="1" %)(% colspan="1" %) | ||
355 | ((( | ||
356 | Nginx (hosting), Python (API) | ||
357 | )))|((( | ||
358 | Provides physical image storage | ||
359 | )))|((( | ||
360 | Production | ||
361 | )))|((( | ||
362 | internal only | ||
363 | )))|((( | ||
364 | |||
365 | ))) | ||
366 | |((( | ||
367 | GIS | ||
368 | )))|((( | ||
369 | WFS / WMTS | ||
370 | )))|(% colspan="1" %)(% colspan="1" %) | ||
371 | ((( | ||
372 | Geoserver | ||
373 | )))|((( | ||
374 | Provides several layers and in future observation data in GIS formats | ||
375 | )))|((( | ||
376 | Production | ||
377 | )))|((( | ||
378 | internal only | ||
379 | )))|((( | ||
380 | |||
381 | ))) | ||
382 | |((( | ||
383 | GIS converter | ||
384 | )))|((( | ||
385 | HTTP-API | ||
386 | )))|(% colspan="1" %)(% colspan="1" %) | ||
387 | ((( | ||
388 | R | ||
389 | )))|((( | ||
390 | Transforms downloads to GIS formats | ||
391 | )))|((( | ||
392 | Production | ||
393 | )))|((( | ||
394 | [[https:~~/~~/github.com/luomus/finbif-geo-convert>>url:https://github.com/luomus/finbif-geo-convert||shape="rect"]] | ||
395 | )))|((( | ||
396 | |||
397 | ))) | ||
398 | |((( | ||
399 | FinBIF 2 GBIF | ||
400 | )))|((( | ||
401 | HTTP-API | ||
402 | )))|(% colspan="1" %)(% colspan="1" %) | ||
403 | ((( | ||
404 | R | ||
405 | )))|((( | ||
406 | Shares FinBIF data to [[https:~~/~~/www.gbif.org/>>url:https://www.gbif.org/||shape="rect"]] | ||
407 | )))|((( | ||
408 | Production | ||
409 | )))|((( | ||
410 | [[https:~~/~~/github.com/luomus/finbif2gbif>>url:https://github.com/luomus/finbif2gbif||shape="rect"]] | ||
411 | )))|((( | ||
412 | |||
413 | ))) | ||
414 | |((( | ||
415 | |||
416 | )))|((( | ||
417 | |||
418 | )))|(% colspan="1" %)(% colspan="1" %) | ||
419 | ((( | ||
420 | |||
421 | )))|((( | ||
422 | |||
423 | )))|((( | ||
424 | |||
425 | )))|((( | ||
426 | |||
427 | )))|((( | ||
428 | |||
429 | ))) | ||
430 | |(% colspan="1" %)(% colspan="1" %) | ||
431 | ((( | ||
432 | |||
433 | )))|(% colspan="1" %)(% colspan="1" %) | ||
434 | ((( | ||
435 | |||
436 | )))|(% colspan="1" %)(% colspan="1" %) | ||
437 | ((( | ||
438 | |||
439 | )))|(% colspan="1" %)(% colspan="1" %) | ||
440 | ((( | ||
441 | |||
442 | )))|(% colspan="1" %)(% colspan="1" %) | ||
443 | ((( | ||
444 | |||
445 | )))|(% colspan="1" %)(% colspan="1" %) | ||
446 | ((( | ||
447 | |||
448 | )))|(% colspan="1" %)(% colspan="1" %) | ||
449 | ((( | ||
450 | |||
451 | ))) | ||
452 | |(% colspan="1" %)(% colspan="1" %) | ||
453 | ((( | ||
454 | |||
455 | )))|(% colspan="1" %)(% colspan="1" %) | ||
456 | ((( | ||
457 | |||
458 | )))|(% colspan="1" %)(% colspan="1" %) | ||
459 | ((( | ||
460 | |||
461 | )))|(% colspan="1" %)(% colspan="1" %) | ||
462 | ((( | ||
463 | |||
464 | )))|(% colspan="1" %)(% colspan="1" %) | ||
465 | ((( | ||
466 | |||
467 | )))|(% colspan="1" %)(% colspan="1" %) | ||
468 | ((( | ||
469 | |||
470 | )))|(% colspan="1" %)(% colspan="1" %) | ||
471 | ((( | ||
472 | |||
473 | ))) | ||
474 | |||
475 | |||
476 | = Data storage architecture = | ||
477 | |||
478 | Architecture from point of view of data strorage. | ||
479 | |||
480 | (% class="relative-table wrapped" style="width:47.6279%" %) | ||
481 | |=((( | ||
482 | System | ||
483 | )))|=((( | ||
484 | Data | ||
485 | )))|=((( | ||
486 | Technique | ||
487 | )))|=((( | ||
488 | Data type | ||
489 | ))) | ||
490 | |((( | ||
491 | Kotka | ||
492 | )))|((( | ||
493 | Specimen primary data storage | ||
494 | )))|((( | ||
495 | Oracle | ||
496 | )))|((( | ||
497 | Triplets/Ontology | ||
498 | ))) | ||
499 | |(% colspan="1" %)(% colspan="1" %) | ||
500 | ((( | ||
501 | Kotka | ||
502 | )))|(% colspan="1" %)(% colspan="1" %) | ||
503 | ((( | ||
504 | Kotka internal search | ||
505 | )))|(% colspan="1" %)(% colspan="1" %) | ||
506 | ((( | ||
507 | ElasticSearch | ||
508 | )))|(% colspan="1" %)(% colspan="1" %) | ||
509 | ((( | ||
510 | JSON | ||
511 | ))) | ||
512 | |((( | ||
513 | Vihko | ||
514 | )))|((( | ||
515 | Observation primary data storage | ||
516 | )))|((( | ||
517 | Oracle | ||
518 | )))|((( | ||
519 | JSON | ||
520 | ))) | ||
521 | |((( | ||
522 | Master data | ||
523 | )))|((( | ||
524 | Taxonomy, Area, Collection metada etc storage location | ||
525 | )))|((( | ||
526 | Oracle | ||
527 | )))|((( | ||
528 | Triplets/Ontology | ||
529 | ))) | ||
530 | |((( | ||
531 | Multimedia-API | ||
532 | )))|((( | ||
533 | Image (+3d, audio) storage | ||
534 | )))|((( | ||
535 | Disk | ||
536 | )))|((( | ||
537 | Files | ||
538 | ))) | ||
539 | |((( | ||
540 | Laji-DW | ||
541 | )))|((( | ||
542 | ETL process and metadata | ||
543 | )))|((( | ||
544 | Oracle | ||
545 | )))|((( | ||
546 | Relational database | ||
547 | ))) | ||
548 | |(% colspan="1" %)(% colspan="1" %) | ||
549 | ((( | ||
550 | Laji-DW | ||
551 | )))|(% colspan="1" %)(% colspan="1" %) | ||
552 | ((( | ||
553 | Observation Search Engine | ||
554 | )))|(% colspan="1" %)(% colspan="1" %) | ||
555 | ((( | ||
556 | Vertica | ||
557 | )))|(% colspan="1" %)(% colspan="1" %) | ||
558 | ((( | ||
559 | Column storage relational database | ||
560 | ))) | ||
561 | |(% colspan="1" %)(% colspan="1" %) | ||
562 | ((( | ||
563 | Taxa | ||
564 | )))|(% colspan="1" %)(% colspan="1" %) | ||
565 | ((( | ||
566 | Taxonomy endpoint | ||
567 | )))|(% colspan="1" %)(% colspan="1" %) | ||
568 | ((( | ||
569 | ElasticSearch | ||
570 | )))|(% colspan="1" %)(% colspan="1" %) | ||
571 | ((( | ||
572 | JSON | ||
573 | ))) | ||
574 | |(% colspan="1" %)(% colspan="1" %) | ||
575 | ((( | ||
576 | Geo | ||
577 | )))|(% colspan="1" %)(% colspan="1" %) | ||
578 | ((( | ||
579 | Georeferencing and geo queries | ||
580 | )))|(% colspan="1" %)(% colspan="1" %) | ||
581 | ((( | ||
582 | ElasticSearch | ||
583 | )))|(% colspan="1" %)(% colspan="1" %) | ||
584 | ((( | ||
585 | JSON | ||
586 | ))) | ||
587 | |(% colspan="1" %)(% colspan="1" %) | ||
588 | ((( | ||
589 | GIS | ||
590 | )))|(% colspan="1" %)(% colspan="1" %) | ||
591 | ((( | ||
592 | Geoserver data | ||
593 | )))|(% colspan="1" %)(% colspan="1" %) | ||
594 | ((( | ||
595 | PostgreSQL | ||
596 | )))|(% colspan="1" %)(% colspan="1" %) | ||
597 | ((( | ||
598 | Relational database | ||
599 | ))) | ||
600 | |||
601 | = Long-term archiving = | ||
602 | |||
603 | FinBIF preservation strategy involves maintaining biodiversity occurrence data in the FinBIF data format, aligned with the international ABCD (Access to Biological Collections Data) standard. Metadata adheres to the EML (Ecological Metadata Language) standard, promoting compatibility and standardized data curation. In instances of format changes, FinBIF oversees necessary data migrations. | ||
604 | |||
605 | Primary data responsibility resides with FinBIF, while data owners retain responsibility for secondary copies. Data owners, however, retain control over their data, including the right to request removal. In such cases, citable downloads are preserved indefinitely in text format to maintain persistent citation. Identifiers, once assigned, are kept persistent and are never reassigned. | ||
606 | |||
607 | Data is currently hosted and backed up by the University of Helsinki IT services. We are in the process of extending collaboration with CSC's (Finnish IT Center for Science) Finnish National Digital Preservation Service. | ||
608 | |||
609 | = Server architecture = | ||
610 | |||
611 | FinBIF services are hosted by Helsinki University IT Center and CSC Pouta cloud and OpenShift Kubernetes services. | ||
612 | |||
613 | |||
614 |