PostgreSQL: what processes run on it?


#1

Which components of the C3 landscape reside / run in PostgreSQL?

I’m aware of the log tables, like DataLoadUploadLog, etc but unclear as to which pieces of the puzzle reside on PostgreSQL. Ingestion --> normalization --> refresh Analytics


#2

Since postgres can be viewed as a single point of failure, I would imagine as few tasks as possible are being run/processed directly on the relational database. All of the processes you named (various Invalidation queue work) are picked up by worker nodes. Depending on the nature of the work those processes will likely need to make requests for data to postgres, but they won’t run anything work intensive directly on the database because that would mean every other process that needs access to data would be blocked.

The only things I can think of that I believe are being pushed down to postgres for performance benefits are expressions provided in Persistable.evaluate/Persistable.fetch - for example:

Facility.fetch({
    filter: Filter.intersects('servicePoint.meterAsset.id', ['id1', 'id2'])
});

In this case I the filter is going to be pushed down to a SQL expression.


#3

Thanks for that Scott
The question had more to do with 'if PostgreSQL is running like a dog (think overweight bulldog, not greyhound), what processes will be affected?


#4

That question I’m not too sure about (besides the obvious answer of “anything that needs to touch postgres”)

On a (sort of) related note - I recently found out about the Action Profiler app in Splunk, which can give a breakdown how long every part of a given action took. If you haven’t seen it yet check it out! In splunk, you would click the top left drop-down "App: [someapp]" > “Cluster Monitor” ; then choose the “Action Profiler” tab