Dual Database Strategy
Dual Database Strategy
The Asterisk 2 core data persistence model enforces complete decoupling between standard web operations and real-time Telephony signaling engines. By routing commands across isolated Entity Framework Core contexts, the platform guarantees that network delays or multi-tenant database indexing overhead never block live SIP connection loops.
Entity Framework Context Pipeline
The application physically segregates data access layers across three primary access boundaries:
graph TD
%% Controllers & Core
subgraph DataBroker["Application Data Integration Services"]
DI_Ctx["Entity Framework Core Query Layer"]
end
%% Isolated Database Contexts
subgraph PrimaryAppStore["Multi-Tenant Master Context"]
Ctx_App["ApplicationDbContext"]
Db_App[("AppDb Platform Engine<br/>(SQL Server)")]
Ctx_App <==>|"Read / Write Operations<br/>(Users, RAG Metadata, Branding)"| Db_App
end
subgraph TelephonyStore["Operational Session Context"]
Ctx_Tel["TelephonyDbContext"]
Db_Tel[("Telephony Index Engine<br/>(SQL Server)")]
Ctx_Tel <==>|"Read / Write Operations<br/>(Gateways, SIM Trackers)"| Db_Tel
end
subgraph AstRealtimeProxy["Asterisk Cluster Realtime Proxy"]
Ctx_Ast["AstDbContext<br/>(Read-Only EF Proxy)"]
Db_Ast[("wb_ast Realtime DB<br/>(Direct MySQL/SQL Store)")]
Ctx_Ast -.->|"High-Speed Proxy Queries<br/>(Zero RTT Network Mapping)"| Db_Ast
end
%% Dispatch Path
DI_Ctx --> Ctx_App
DI_Ctx --> Ctx_Tel
DI_Ctx --> Ctx_Ast
%% Styling
classDef storeClass fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff,rx:6px,ry:6px;
classDef proxyClass fill:#312e81,stroke:#ec4899,stroke-width:2px,color:#fff,rx:6px,ry:6px;
class PrimaryAppStore,TelephonyStore,Ctx_App,Ctx_Tel,Db_App,Db_Tel storeClass;
class AstRealtimeProxy,Ctx_Ast,Db_Ast proxyClass;
Decoupled Entity Schema Index
1. Master Application Ledger (ApplicationDbContext)
Serves as the structural brain storing global parameters and tenant options:
Projects,Sections,Pages: Contains complete documentation tree definitions and chunk arrays.AppSettings,ApiKeys: Manages master encryption tokens, global RAG scope strings, and application UI styling rules.- Identity Storage Engine: Manages user accounts, claims maps, and password storage structures cleanly segregated from commercial telephony layers.
2. Operational Proxy Mapper (AstDbContext)
Provides a direct memory-mapped read conduit into the live underlying databases used directly by the active Asterisk PBX nodes:
PsEndpoint: Resolves registered PJSIP client parameters and authentication bounds instantly.Server: Monitors individual Asterisk server node status across load balanced clusters.Cdr&Cel: Exposes real-time call detail streams and raw channel life-cycles for immediate dashboard visualization.QueueLog&VoicemailMessage: Tracks instant channel queues without requiring expensive intermediate sync processes.
Architectural Isolation Principle
To maintain database integrity, modifications to the live wb_ast database are restricted strictly to native signaling loops. Application services query this database via read-only tracking modes, completely avoiding distributed table locking risks.