Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate storing payload outside of RDBMS #1869

Closed
punktilious opened this issue Jan 13, 2021 · 5 comments
Closed

Investigate storing payload outside of RDBMS #1869

punktilious opened this issue Jan 13, 2021 · 5 comments
Assignees
Labels
P2 Priority 2 - Should Have performance performance persistence

Comments

@punktilious
Copy link
Collaborator

The FHIR resource payload is currently stored as a (potentially) large compressed object in the FHIR RDBMS (Db2, Derby, PostgreSQL).

Investigate options for storing the payload separately using another service.

@lmsurpre lmsurpre added the P2 Priority 2 - Should Have label Mar 11, 2021
@lmsurpre
Copy link
Member

High estimate due to testing concerns around edge cases...especially cases where COS gets out-of-sync due to network or other issues.

@punktilious
Copy link
Collaborator Author

There are two main challenges that must be addressed for this to be successful:

  1. Payloads written to an external system must be removed if the (RDBMS) transaction is rolled back. This removal does not have to be synchronous with the rollback, it just needs to be performed in a reasonable time in order not to leave orphaned PHI records.
  2. To maintain reasonable response times when processing ingestion-heavy bundles, the extra service calls (e.g. save to Cassandra) should be done asynchronously

Current thinking is to use a Kafka service to publish changes and use a consumer thread to perform reconciliation with the RDBMS. Any records read from Kafka but not in the RDBMS must be related to a failed transaction and so the payload content can be deleted (e.g. from Cassandra).

More to come.

@lmsurpre
Copy link
Member

lmsurpre commented Oct 15, 2021

Be sure that the new config prop fhirServer/persistence/payload gets documented (or ensure this is included in follow-up issue) before closing this one

@lmsurpre
Copy link
Member

Be sure that the new config prop fhirServer/persistence/payload gets documented (or ensure this is included in follow-up issue) before closing this one

I moved this part to #2899

@lmsurpre
Copy link
Member

lmsurpre commented Oct 27, 2021

We exercised the touchstone basic server tests against the latest in main and, after doing #2906 to appease touchstone, it passed with flying colors.
Further analysis can be made as part of our performance testing for the upcoming 4.10 release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P2 Priority 2 - Should Have performance performance persistence
Projects
None yet
Development

No branches or pull requests

2 participants