You've just spent three hours debugging why your real-time trading system is dropping updates, managing complex state synchronization between different software components, and wondering why your "simple" analytics pipeline feels like you're wrestling with an octopus. Sound familiar?
There's a better way. What if I told you that the most successful Deephaven applications don't build complex software architectures at all?
Deephaven is fundamentally different from traditional databases and analytics tools. While other platforms bolt real-time capabilities onto existing architectures, Deephaven was built around live, updating tables. This blog shows why this architectural choice matters through a clear example of table-oriented thinking.
Why Deephaven's approach is different
Other real-time platforms make you choose between performance and simplicity. Deephaven's table-oriented architecture provides:
- Simplicity: Your code becomes declarative — describe what you want, and Deephaven's engine handles the orchestration of real-time updates automatically.
- Performance: Tables update incrementally, not through full recalculations, processing millions of updates per second while maintaining microsecond latencies.
- Faster development: Deploy real-time analytics quickly. Add new data sources, calculations, or consumers without architectural changes.
The most successful Deephaven applications work with the platform's strengths. When you embrace table-oriented thinking instead of forcing traditional patterns, everything becomes simpler, faster, and more maintainable.
The paradigm shift: From objects to tables
Traditional software development teaches us to model business concepts as separate software components (called "objects" or "classes" in programming). A trading system might have separate PriceFeed, Trade, and Portfolio components, each managing their own data and logic - but in Deephaven's table-oriented world, these business concepts become tables with relationships.
Here's the key conceptual mapping: In object-oriented programming, you work with individual objects. In table-oriented programming, you work with rows.
- An object (like a specific
Tradeinstance) → A row in a table. - A collection of objects (like a list of trades) → A table of rows.
- Object properties (like
trade.symbolortrade.quantity) → Table columns. - Methods that transform objects → Table operations.
This isn't just terminology — it's a different way of thinking about data:
The power of this shift becomes clear when data changes. In OOP, you manage individual object updates. In table-oriented programming, entire rows update automatically, and those updates cascade through your entire dependency graph.
Visual comparison: OOP vs. table-oriented flow
A real customer example
This isn't theoretical. Here's actual code from our customer support team showing a developer how to build a real-time analytics system using table-oriented design. The example demonstrates a complete trading workflow — from live price feeds and trade execution to portfolio tracking and analysis. Notice how every business concept (prices, trades, positions) becomes a table, and how their relationships are expressed through simple table operations rather than complex event handlers:
Key concepts
Let's examine what makes this approach so powerful.
Tables as entities
Notice how each key concept is represented as a table:
- Price feed →
pricestable - Trade feed →
tradestable - Portfolio history →
portfolio_histtable - Current portfolio →
portfoliotable - Trade analysis →
analysistable
Each table isn't just storing data — it's a living, updating entity that represents a business concept.
Table relationships
Instead of method calls between objects, we have table operations that express relationships:
These operations create a dependency graph where changes in one table automatically propagate to dependent tables.
Real-time by default
In object-oriented systems, you typically need to implement observers, event handlers, or polling to keep derived data up-to-date. With Deephaven's table-oriented approach, updates flow automatically:
- New prices in the
pricestable automatically update trades. - New trades automatically update portfolio history.
- Portfolio history changes automatically update current positions.
Mental model shift
Before: OOP
After: Tables
The table-oriented approach eliminates the complexity of managing state, notifications, and synchronization — it's all handled automatically by the table engine.
What this means for your development workflow
Before (OOP approach):
- 50+ lines of state management code.
- Manual synchronization between components.
- Hours debugging race conditions and update ordering.
- Brittle code that breaks when requirements change.
- Complex observer patterns and event handling.
After (Table-oriented approach):
- 10 lines of declarative table operations.
- Automatic updates across your entire system.
- Zero race conditions by design.
- Requirements changes = adding new table operations.
- Natural composability—outputs become inputs seamlessly.
Key benefits
1. Composability
Tables compose naturally. The output of one table operation becomes the input to another, creating data pipelines. You build complex systems by connecting simple, reusable operations:
2. Automatic dependency management
Deephaven tracks relationships between tables and propagates updates efficiently. When data changes, only affected computations run — no manual synchronization, no race conditions, no stale data.
3. Declarative simplicity
You describe what you want, not how to compute it. Deephaven handles real-time updates, state management, and incremental calculations automatically:
Making the transition
1. Identify your core entities
Start by listing the key business concepts in your domain:
- What are the main data sources?
- What derived metrics do you need?
- What are the relationships between entities?
2. Map entities to tables
For each entity, create a table that represents it:
- Raw feeds become source tables.
- Calculations become derived tables.
- Aggregations become summary tables.
3. Express relationships
Use Deephaven's table operations to express how entities relate:
updateandviewfor creating and transforming columns.wherefor filtering data.agg_byfor grouping and aggregation.update_byfor running calculations and windowed operations.ajand other joins for combining tables based on keys and time.sort,head,tail, andlast_byfor ordering and selecting data.
4. Think data flow
Design your system as a flow of data through transformations rather than a collection of interacting objects.
Real-world architecture
The table-oriented approach works well for complex, event-driven architectures. Consider an automated trading system:
Tables naturally support event-driven patterns. When new market data arrives, updates automatically flow through the dependency chain:
- New market data → triggers signal calculation.
- New signals → triggers order generation.
- New orders → triggers external system notification.
- Trade results → triggers portfolio updates.
Your next 15 minutes
Don't just read about table-oriented thinking —- experience it:
- Try the example: Copy the customer support code into a Deephaven session and watch tables update in real-time.
- Identify one pain point in your current analytics code where you're managing state manually.
- Reimagine it as tables: What would those entities look like as living, updating tables?
When you make this mental shift, what seemed complex becomes clearer. The paradigm works with you instead of against you.
The bottom line
Table-oriented thinking changes how you build real-time systems. Instead of managing event processing frameworks, message queues, and state synchronization, you describe what you want:
- Faster development: Build systems in days instead of months, with automatic consistency.
- Flexible architecture: Add requirements without rewrites — the dependency graph adapts naturally.
- Lower complexity: Developers at all levels can build sophisticated systems because complexity is handled at the platform level.
When you're designing a real-time system, the choice is straightforward: spend time building your analytics logic, or spend time building infrastructure.
The next time you're designing a real-time system, ask yourself: "Do I want to build analytics, or do I want to build infrastructure?"
Deephaven lets you focus on what matters: your business logic, not your plumbing.
Start your table-oriented journey with our quickstart guide to get hands-on experience, or explore our how-to guides for specific patterns and techniques.