Anders Swanson
banner
anders-swanson.bsky.social
Anders Swanson
@anders-swanson.bsky.social
Developer Evangelist for Oracle Database. I post instructional videos, how-to guides, and blog posts for developers using Oracle Database.
Spatial Data in Oracle AI Database

Spatial data describes the shape, location, and relationships of objects or points - whether virtual or in the real world. It powers everything from mapping and logistics to proximity search and location-aware applications. In Oracle AI Database, spatial is a…
Spatial Data in Oracle AI Database
Spatial data describes the shape, location, and relationships of objects or points - whether virtual or in the real world. It powers everything from mapping and logistics to proximity search and location-aware applications. In Oracle AI Database, spatial is a first-class data type. You store it, index it, query it, and join it alongside your relational, JSON, and vector data…
andersswanson.dev
November 14, 2025 at 10:36 PM
AI Optimizer & Toolkit: test and generate apps

In this article, we'll explore automated testing with the Oracle AI Optimizer & Toolkit, and then generate Python LangChain or Java Spring AI applications from our tested AI configurations. What is the Oracle AI Optimizer & Toolkit? It’s a free and…
AI Optimizer & Toolkit: test and generate apps
In this article, we'll explore automated testing with the Oracle AI Optimizer & Toolkit, and then generate Python LangChain or Java Spring AI applications from our tested AI configurations. What is the Oracle AI Optimizer & Toolkit? It’s a free and open-source tool designed to make it easier for developers and data engineers to build, benchmark, and optimize AI workflows running on Oracle Database.
andersswanson.dev
November 5, 2025 at 5:44 PM
Unlocking Session Visibility with Oracle Client Info

Monitoring database interactions is critical for performance tuning, debugging, and security. With Oracle AI Database, you can attach client metadata to connections; such as client identifiers, module and action names. Client metadata can be…
Unlocking Session Visibility with Oracle Client Info
Monitoring database interactions is critical for performance tuning, debugging, and security. With Oracle AI Database, you can attach client metadata to connections; such as client identifiers, module and action names. Client metadata can be queried from views like V$SESSION to see where your application is interacting with the database. In this article, we'll build a sample Spring Boot application that integrates client info into database connections.
andersswanson.dev
November 3, 2025 at 6:34 PM
AI Optimizer & Toolkit: connect LLMs and use your data

In this article, we’ll configure the Oracle AI Optimizer and Toolkit with an LLM, enable embedding and chat APIs, and integrate user context through vectorized data for RAG-powered responses. We'll embed and store user data in Oracle AI…
AI Optimizer & Toolkit: connect LLMs and use your data
In this article, we’ll configure the Oracle AI Optimizer and Toolkit with an LLM, enable embedding and chat APIs, and integrate user context through vectorized data for RAG-powered responses. We'll embed and store user data in Oracle AI Database with vector indexes, all without a single line of code! What is the Oracle AI Optimizer and Toolkit? It's a free and open-source tool designed to make it easier for developers and data engineers to build, benchmark, and optimize AI workflows running on Oracle Database.
andersswanson.dev
October 27, 2025 at 5:28 PM
AI Optimizer & Toolkit: set up a local sandbox

The Oracle AI Optimizer and Toolkit is a free and open-source tool designed to make it easier for developers and data engineers to build, benchmark, and optimize AI workflows running on Oracle Database. It provides a modular framework for…
AI Optimizer & Toolkit: set up a local sandbox
The Oracle AI Optimizer and Toolkit is a free and open-source tool designed to make it easier for developers and data engineers to build, benchmark, and optimize AI workflows running on Oracle Database. It provides a modular framework for experimenting with model selection, prompt engineering, agents (tool calling), retrieval-augmented generation (RAG), and hybrid query optimization. In this article, we'll set up a local, containerized test environment for the AI Optimizer and Toolkit - enabling you to develop and test AI with Oracle Database without writing a single line of SQL.
andersswanson.dev
October 21, 2025 at 4:53 PM
How to write a custom tracer for Oracle Database JDBC

In this article, we'll implement a custom JDBC tracer for Oracle Database based on the OJDBC OpenTelemetry provider. Our custom implementation integrates with Spring Boot and adds span attributes like database client info and the system user.…
How to write a custom tracer for Oracle Database JDBC
In this article, we'll implement a custom JDBC tracer for Oracle Database based on the OJDBC OpenTelemetry provider. Our custom implementation integrates with Spring Boot and adds span attributes like database client info and the system user. If you'd like to use the Oracle-provided JDBC tracing implementation, check out my prior post: Oracle JDBC Tracing with Spring Boot OpenTelemetry…
andersswanson.dev
October 20, 2025 at 5:20 PM
Oracle JDBC Tracing with Spring Boot OpenTelemetry

Oracle's JDBC Driver can export traces to an OpenTelemetry backend - let's walk through how to configure this with Spring Boot and Micrometer! Just looking for the code? Click Here. With OpenTelemetry tracing, you gain visibility into JDBC calls…
Oracle JDBC Tracing with Spring Boot OpenTelemetry
Oracle's JDBC Driver can export traces to an OpenTelemetry backend - let's walk through how to configure this with Spring Boot and Micrometer! Just looking for the code? Click Here. With OpenTelemetry tracing, you gain visibility into JDBC calls Oracle Database — making it easier to debug, optimize, and monitor your applications. We'll collect traces from JDBC calls, export traces to an OpenTelemetry (Zipkin) backend, and then view the traces online.
andersswanson.dev
October 10, 2025 at 8:36 PM
Tracing a Spring Boot JMS app with Oracle Database Free

In this article, we'll use OpenTelemetry tracing to instrument a Spring JMS application with Oracle Database Free. Tracing allows developers to follow a request as it flows through distributed systems — in this case, from the producer to the…
Tracing a Spring Boot JMS app with Oracle Database Free
In this article, we'll use OpenTelemetry tracing to instrument a Spring JMS application with Oracle Database Free. Tracing allows developers to follow a request as it flows through distributed systems — in this case, from the producer to the consumer through Oracle Database Transactional Event Queues (TxEventQ). Tracing helps correlate slow consumers, lost messages, or queue bottlenecks to specific spans.
andersswanson.dev
October 7, 2025 at 3:11 PM
Monitor your Oracle Database(s) with OpenTelemetry

In this article, we'll explore how Oracle Database fits into the modern, open-source, and cloud-native observability stack. What is OpenTelemetry? OpenTelemetry is an open-source observability framework that provides a standardized way to collect…
Monitor your Oracle Database(s) with OpenTelemetry
In this article, we'll explore how Oracle Database fits into the modern, open-source, and cloud-native observability stack. What is OpenTelemetry? OpenTelemetry is an open-source observability framework that provides a standardized way to collect and process telemetry data, including traces, metrics, and logs: Standardizes across tools and vendors, allowing you to send data to any backend that supports OpenTelemetry. Supports modern architectures, where cloud-native microservices greatly benefit from consistent telemetry collection.
andersswanson.dev
October 2, 2025 at 6:20 PM
Testing Go apps with Oracle Database using Testcontainers

In this article, we'll walk through how to configure an Oracle Database Free container for go application tests using testcontainers-go. What is Testcontainers? Testcontainers for Oracle Database (go) Write a test for OracleContainer Run…
Testing Go apps with Oracle Database using Testcontainers
In this article, we'll walk through how to configure an Oracle Database Free container for go application tests using testcontainers-go. What is Testcontainers? Testcontainers for Oracle Database (go) Write a test for OracleContainer Run the test References What is Testcontainers? Testcontainers is a popular framework that lets you test applications against real, disposable containers. It helps ensure your tests run against realistic environments without requiring complex infrastructure setup.
andersswanson.dev
October 1, 2025 at 9:01 PM
Migrate an Apache Kafka app to Oracle Database in 5 minutes.
youtu.be/LS12tcBNIdM?...
Migrate an Apache Kafka application to Oracle Database in 5 minutes
YouTube video by Data Bites
youtu.be
September 30, 2025 at 6:46 PM
Consumers and message retention in database-driven event streaming

In this article, we’ll walk through the differences between push vs. pull messaging, queues and topics, and describe consumer groups in the context of Oracle Database Transactional Event Queues (TxEventQ). By the end of this…
Consumers and message retention in database-driven event streaming
In this article, we’ll walk through the differences between push vs. pull messaging, queues and topics, and describe consumer groups in the context of Oracle Database Transactional Event Queues (TxEventQ). By the end of this article, you should have a solid understanding of how consumers and message retention work when using Oracle Database for high-throughput, asynchronous, service-to-service messaging. Intro to Database-driven Messaging…
andersswanson.dev
September 25, 2025 at 6:44 PM
Pub/Sub with a NodeJS Oracle Database App

Did you know you can easily add pub/sub capabilities to your NodeJS/TypeScript app using Oracle Database? In this article, we'll implement a simple pub/sub TypeScript example using Oracle Database Transactional Event Queues (TxEventQ). If you're not…
Pub/Sub with a NodeJS Oracle Database App
Did you know you can easily add pub/sub capabilities to your NodeJS/TypeScript app using Oracle Database? In this article, we'll implement a simple pub/sub TypeScript example using Oracle Database Transactional Event Queues (TxEventQ). If you're not familiar with TxEventQ or database-driven messaging, I recommend reading my article Pub/Sub in your DB. You’ll learn patterns you can use in any NodeJS/TypeScript app, making it easy to implement database-driven messaging between one or more distributed services.
andersswanson.dev
September 22, 2025 at 8:07 PM
Pub/Sub in your DB? Oracle Database TxEventQ

Pub/Sub in the Database? Yes — Here’s Why. In this article, we’ll discuss how to use your database for event streaming with Oracle Database Transactional Event Queues (TxEventQ), a built-in, database-native message broker. TxEventQ supports multiple…
Pub/Sub in your DB? Oracle Database TxEventQ
Pub/Sub in the Database? Yes — Here’s Why. In this article, we’ll discuss how to use your database for event streaming with Oracle Database Transactional Event Queues (TxEventQ), a built-in, database-native message broker. TxEventQ supports multiple consumers/producers, exactly-once messaging, partitioned queuing (key based and automatic), and strict ordering per message stream. TxEventQ is included in every Oracle Database version from…
andersswanson.dev
September 18, 2025 at 6:54 PM
Test your TypeScript/NodeJS apps with Oracle Database Free

Testcontainers is a popular framework that lets you test applications against real, disposable containers. It helps ensure your tests run against realistic environments without requiring complex infrastructure setup. In this article, we'll…
Test your TypeScript/NodeJS apps with Oracle Database Free
Testcontainers is a popular framework that lets you test applications against real, disposable containers. It helps ensure your tests run against realistic environments without requiring complex infrastructure setup. In this article, we'll use the GenericContainer class to implement an Oracle Database Free container for testing, experimentation, and POCs. Our implementation will use the testcontainers-nodejs SDK and the Oracle Database Free container image…
andersswanson.dev
September 17, 2025 at 3:38 PM
Spring Boot + Oracle Database

In this article, we'll explore several Oracle Database integrations with Spring Boot from the Spring Cloud Oracle project. UCP DataSource over Hikari Oracle Wallet JMS Spring Cloud Stream Binder kafka-clients APIs JSON Collections Testcontainers with Oracle Database…
Spring Boot + Oracle Database
In this article, we'll explore several Oracle Database integrations with Spring Boot from the Spring Cloud Oracle project. UCP DataSource over Hikari Oracle Wallet JMS Spring Cloud Stream Binder kafka-clients APIs JSON Collections Testcontainers with Oracle Database References UCP DataSource over Hikari If you're familiar with Spring Boot JDBC, you'll know that Hikari is the default for connection pools. However, if you’re looking to use advanced database features and get the most out of your database connection pool, consider…
andersswanson.dev
September 16, 2025 at 4:53 PM
Transactional Outbox: Simplified with Oracle Database

Event streaming is extremely popular in modern application architectures, providing high-throughput, real-time data flow in microservices architectures. However, ensuring data consistency in distributed systems is challenging — Traditional…
Transactional Outbox: Simplified with Oracle Database
Event streaming is extremely popular in modern application architectures, providing high-throughput, real-time data flow in microservices architectures. However, ensuring data consistency in distributed systems is challenging — Traditional two-phase commit (2PC) implementations can be costly and slow, making them impractical for high-throughput environments. In this article, we’ll solve data consistency challenges in event streaming systems using Oracle Database Transactional Event Queues…
andersswanson.dev
September 12, 2025 at 4:38 PM
Learn Testcontainers (Java) with Oracle Database Free

Testcontainers is a popular testing library that enables developers to write tests against disposable, containerized instances of databases, message brokers, and other essential services — anything that can fit in a container. For database…
Learn Testcontainers (Java) with Oracle Database Free
Testcontainers is a popular testing library that enables developers to write tests against disposable, containerized instances of databases, message brokers, and other essential services — anything that can fit in a container. For database testing, Testcontainers integrates with Oracle Database Free, to offer a powerful, developer-focused solution to spin up real, isolated database instances directly within their tests, ensuring reliable and consistent environments.
andersswanson.dev
September 11, 2025 at 7:09 PM
Test Python Applications with Oracle Database Free using Testcontainers

Testcontainers is a wildly popular library that provides developers with on-demand, disposable containers. When you build apps that use databases like Oracle, testing against a real instance instead of mocks or in-memory…
Test Python Applications with Oracle Database Free using Testcontainers
Testcontainers is a wildly popular library that provides developers with on-demand, disposable containers. When you build apps that use databases like Oracle, testing against a real instance instead of mocks or in-memory alternatives improves reliability and confidence in application behavior. In this article, we'll use the Testcontainers Python binding with Oracle Database Free to spin up disposable database containers - containers you can use for…
andersswanson.dev
September 11, 2025 at 2:23 PM
Multiple Views, One Schema: Simple RBAC with Duality Views

In this article, we'll explore how JSON Relational Duality Views can be used to decompose a schema into subdomains - allowing role-based isolation of data to relevant services. If you'd like to follow along with this article, I recommend…
Multiple Views, One Schema: Simple RBAC with Duality Views
In this article, we'll explore how JSON Relational Duality Views can be used to decompose a schema into subdomains - allowing role-based isolation of data to relevant services. If you'd like to follow along with this article, I recommend using Oracle Database Free. Unfamiliar with JSON Relational Duality Views? Read 7 Reasons to try out JSON Relational Duality Views, with samples…
andersswanson.dev
September 8, 2025 at 8:20 PM
10 Modern Database Features To Start Using Today

Relational databases have evolved. Modern multi-model databases go beyond tables, rows, and columns to become full-featured data platforms for application development. In this article, we'll explore 10 modern Oracle Database features that help build…
10 Modern Database Features To Start Using Today
Relational databases have evolved. Modern multi-model databases go beyond tables, rows, and columns to become full-featured data platforms for application development. In this article, we'll explore 10 modern Oracle Database features that help build simple, robust data-driven applications. Event Streaming JSON Document Data Multitenant Architecture Database as Cache Automatic REST APIs AI Vector Search Geospatial and Graph In-Database JavaScript Observability and Monitoring…
andersswanson.dev
September 5, 2025 at 5:41 PM
Virtual, Materialized, and @generated columns

In this article, we'll explore virtual and materialized columns and @generated fields in JSON Relational Duality Views. Why use computed columns at all? Indexing Query simplification Human error Types of computed columns Virtual Columns Materialized…
Virtual, Materialized, and @generated columns
In this article, we'll explore virtual and materialized columns and @generated fields in JSON Relational Duality Views. Why use computed columns at all? Indexing Query simplification Human error Types of computed columns Virtual Columns Materialized Columns And now, @generated When to use each type of computed column? References Why use computed columns at all? I've always computed values in a query, so what's the point?
andersswanson.dev
August 26, 2025 at 8:46 PM
Using a modern database? You might not need that ORM anymore

Object Relational Mapping (ORM) frameworks translate programming objects to SQL statements. ORM implementations are found in most programming languages, and frameworks like Hibernate and Prisma are extremely popular among developers for…
Using a modern database? You might not need that ORM anymore
Object Relational Mapping (ORM) frameworks translate programming objects to SQL statements. ORM implementations are found in most programming languages, and frameworks like Hibernate and Prisma are extremely popular among developers for their ease of use and abstraction of common SQL queries. I've used ORMs in many production-grade systems over the years, and I will likely continue to do so. However, sometimes ORMs won't be my first choice for data access and management.
andersswanson.dev
August 25, 2025 at 4:31 PM
Lock-Free Writes at Scale: Under the Hood of Duality Views

In this article, we'll explore Lock-Free Concurrency, a form of optimistic concurrency control. We'll see how lock-free concurrency control synchronizes document writes with JSON Relational Duality Views, allowing multiple concurrent…
Lock-Free Writes at Scale: Under the Hood of Duality Views
In this article, we'll explore Lock-Free Concurrency, a form of optimistic concurrency control. We'll see how lock-free concurrency control synchronizes document writes with JSON Relational Duality Views, allowing multiple concurrent requests to safely work with the same data. If you're new to duality views, read my article 7 Reasons to try out JSON Relational Duality Views, with samples for a quick primer.
andersswanson.dev
August 18, 2025 at 7:32 PM
GraphQL syntax for JSON Relational Duality Views

Working with JSON Relational Duality Views, you can use the SQL or GraphQL DDL syntax. I like the GraphQL format for its simple, expressive syntax: in this article, we'll explore using GraphQL to define for JSON Relational Duality Views through…
GraphQL syntax for JSON Relational Duality Views
Working with JSON Relational Duality Views, you can use the SQL or GraphQL DDL syntax. I like the GraphQL format for its simple, expressive syntax: in this article, we'll explore using GraphQL to define for JSON Relational Duality Views through examples. If you'd like to follow along with the article, spin up an instance of Oracle Database Free…
andersswanson.dev
August 14, 2025 at 6:26 PM