--- id: e80e161a-4be4-428d-8590-267b9ab4cc7c type: decision title: "Object-handler CloudSQL silver layer architecture" tags: [esb-monorepo, object-handler, architecture, cloudsql, decision] importance: 0.8 confidence: 0.8 created: "2025-12-10T19:55:26.314546+00:00" updated: "2026-03-04T01:48:02.005397+00:00" relations: - target: 6d3dcf69-9c0c-4d8a-b1a7-27267c07da51 type: BUILDS_ON direction: outgoing strength: 0.5 - target: cd528dd3-8328-41c5-9652-81c410c0d344 type: BUILDS_ON direction: incoming strength: 0.5 - target: 35b13826-2f86-460a-a087-c15ba92a9d3e type: RELATED_TO direction: incoming strength: 0.58 edge_id: f335cae2-3e63-477e-a7ea-aaac59077089 - target: 8a4ae0ed-5bac-459b-bdd8-d3075bfc108d type: RELATED_TO direction: incoming strength: 0.65 edge_id: 5718558e-60c9-487f-ab46-9dee64c3385c - target: 43b222b2-abef-4ae0-8d3f-45c7a588eaa7 type: RELATED_TO direction: incoming strength: 0.68 edge_id: 0a395691-6b0f-4172-a4f6-a45057d131b0 --- For object-handler silver layer (CloudSQL) output: Use Cloud SQL Python Connector + pg8000 driver (not SQLAlchemy). Connection method chosen because: (1) Works in Docker locally AND Cloud Functions, (2) IAM auth eliminates password management, (3) No VPC connector needed. Postgres functions handle upsert logic, so raw SQL calls are sufficient - SQLAlchemy would be overkill. Data flow: raw_data stripped before silver layer, full data goes to Firestore bronze layer.