RPDbeginner
Physical Layer Joins & Connection Pools
Understand how physical table joins, keys, and connection pools are configured to enable correct and efficient query generation.
The BI Server trusts the physical layer completely. A join declared here is used to generate SQL, and if it is wrong the SQL is wrong.
Physical joins are like the actual plumbing between rooms in a house — you can't just declare two rooms connected on a floor plan (BMM) if there's no real pipe between them. Connection pools are like separate water lines for the kitchen versus the sprinkler system, so watering the lawn doesn't cut off the kitchen's water pressure.
Key Concepts
1
And wrong is usually silent.
a missing join condition -> rows multiply. Totals are too high.
the wrong join type -> rows disappear. Totals are too low.2
Neither produces an error. The dashboard renders, the numbers are wrong, and somebody reconciles them
against another system weeks later.
3
Joins are declared, not inferred. The Administration Tool can import foreign keys from the database and
propose joins, which is the right starting point — but many warehouses have no declared constraints, so the
joins are entered by hand from knowledge of the data.
4
A complex join expresses the condition explicitly, including multi-column and non-equality conditions.
5
Connection pools define how the server reaches the database.
connect string
credentials, or pass-through
maximum connections
call interface and isolation level6
Several pools against one database is normal, and the reason is isolation:
7
interactive pool 50 connections, short timeout -- dashboards
batch pool 10 connections, long timeout -- scheduled reports8
Without the split, one scheduled report running for forty minutes can hold connections that interactive
users need, and the dashboards queue behind a report nobody is watching.
9
Pass-through against a service account is the design question interviewers ask.
10
shared service account the database sees one user. Simple.
All row-level security must then live in
the RPD, because the database cannot
distinguish who is asking.
pass-through each user's own database credentials.
Native database security applies, and
the database log shows who ran what.11
The trade is real. Pass-through gives you the database's own security and auditing, and costs connection
pooling — a pool per user is not a pool — plus every user needing a database account.
12
Most deployments use a service account and enforce security in the RPD, which is why row-level security
there is a topic of its own.
13
One practical note. Connection pool credentials are stored in the RPD, which is why the RPD file is
treated as a secret and why access to the Administration Tool is controlled.
14
What the interviewer is probing.1. "What is a connection pool for?" Probing: the mechanism. Stalls: "Connections." *Moves
up:* holding the data source connection, credentials and settings such as maximum connections and
the call interface.
15
2. "Why have more than one connection pool per source?" Probing: the practical design.
Stalls: "No reason." Moves up: to separate initialisation blocks from user queries, so a heavy
query does not starve logins — and to apply different limits.
16
3. "What is the difference between a physical and a complex join?" Probing: the distinction.
Stalls: "Nothing." Moves up: physical joins are foreign key relationships between physical
tables; complex joins express a relationship by expression rather than fixed key columns.
17
4. "What is an alias table and why use one?" Probing: the modelling discipline. Stalls:
"Renaming." Moves up: a second reference to the same physical table so each role, such as order
date and ship date, has its own join path without ambiguity.