Credora · Inside Exasol

Runtimes, virtual schemas, UDFs, Lua orchestration, results, the semantic layer and who may read what. Numbers follow one analysis run.

Exasol Personal 2026.1 · inside the database RDS Oracle · CBS ACCOUNT · TXN RDS MySQL · cif company · partner · rm RDS PostgreSQL · los application · past_loan Outside-world relays cibil.credora.link gst.credora.link aa.credora.link PYTHON3 · built-in API, ML and AI UDFs JAVA · built-in Oracle VS adapter (JDBC) RUST · custom SLC 0.23.1 adbc-vs-rs, from BucketFS LUA · built-in scripts + SQL preprocessor Virtual schemas VS_CBS   ADAPTER.ORACLE_ADAPTER   Oracle VS 6.0 · ojdbc17   connection ORA_CBS VS_CIF   ADBC_VS.ADBC_ADAPTER   + ADBC_SCAN · MYSQL_CIF VS_LOS   same adapter · PG_LOS pushdown · read in place API UDFs · Python SET CIBIL_CONSUMER_FETCH CIBIL_COMMERCIAL_FETCH GST_FETCH · AA_FETCH 16 parallel · bulk endpoints MOCK_CIBIL · MOCK_GSTN · MOCK_AA CREDORA_STAGE CIBIL_CONSUMER · CIBIL_COMMERCIAL GST_FILING · AA_ACCOUNT (PURGE_AT) CA_MONTHLY (Oracle pushdown) PURGE_EXPIRED · Lua deletes raw rows past PURGE_AT PURGE_LOG: row count + SHA-256 RUN_ANALYSIS · Lua 11 steps, each timed in RUN_LOG refresh VS · read applications call API UDFs · 13 features score · decide · PREFERRING top 50 TRAIN_MODEL versions the model ML UDFs · Python3 TRAIN_PD   HistGradientBoosting, monotonic   5,000 past loans via VS_LOS PD_SCORE   PD + attribution · 4 parallel BucketFS models/pd_<version>.pkl slc/rustslc (Rust SLC) udf/libadbc_vs_adapter.so ADBC drivers (on first use) ojdbc17.jar · Oracle VS jar CREDIT_MEMO · Python Claude via connection AI_LLM short memo per company → CREDORA.MEMOS CREDORA · results APPLICATIONS · FEATURES SCORES · DECISIONS (rank) MODEL_REGISTRY · RUN_LOG CONFIG · MEMOS · PURGE_LOG V_COMPANY_MASKED (for RM) Semantic layer V_LATEST_* (latest run) CREDORA_SEM.PORTFOLIO 15 certified metrics synonyms · verified questions exasol-semantic-views v0.5.1 SQL preprocessor sql_preprocessor_script =   PREPROC_RT.MASTER framework v0.9.1 · fail-open module SEMANTIC_VIEWS_V1 rules for R_MCP ADMIN DATASCI LOANOPS RM Roles and users CREDORA_SVC · runs analysis CREDORA_ADMIN · read all CREDORA_DATASCI · read all CREDORA_LOANOPS · no STAGE CREDORA_RM · masked view CREDORA_MCP · read-only one R_* role per user Web app backend FastAPI · pyexasol logs in as the Exasol user of the signed-in role Ask Credora Claude + the exasol-mcp-server as CREDORA_MCP semantic layer first Claude Anthropic API or Amazon Bedrock SCRIPT LANGUAGES READ AND FETCH COMPUTE RESULTS AND ACCESS 1 JDBC ADBC ADBC 2 HTTPS 3 4 5 6 7 8 9 SQL 10 MCP compiles per-role rule purge on demand Legend Store: schema, table, BucketFS Compute: UDF, Lua script Custom runtime / semantic layer SQL preprocessor (dispatcher) Security / purge Outside-world relay Web app Claude Dashed: on demand / purge Exasol database

Building blocks, plugged together

  • • Oracle virtual schema 6.0 (Java) and adbc-vs-rs 0.7 on the Rust SLC 0.23.1
  • • BucketFS holds the SLC, adapter library, drivers and every model version
  • • preprocessor-framework v0.9.1 and exasol-semantic-views v0.5.1, version-pinned

Code runs next to the data

  • • External APIs, ML training, scoring and credit memos are all UDFs
  • • Features are SQL with window functions; Oracle aggregates 850k rows by pushdown
  • • Lua makes the whole run one call, with a timing for every step

One definition, enforced by Exasol

  • • One Exasol user per web role; loan operations cannot read raw API replies
  • • The preprocessor applies the semantic module per role and skips it on failure
  • • CREDORA_SEM.PORTFOLIO gives the app and the AI the same 15 certified metrics