Presentation slides from sessions discussing Event Source data storage and read-model projections.
Source code from demos at: https://bitbucket.org/csharpfritz/nerddinner-cqrs
Introduction to Event Sourcing and Challenges such as consistency, validation and concurrent updates.
The talk has been delivered at the Microservice Meetup in Munich.
Event sourcing stores all state as a sequence of events and only stores facts rather than the current application state. It focuses on designing the domain model strategically first before considering data storage or other implementation details. Event sourcing is more complex than traditional approaches but can provide benefits for certain domains by making it easier to understand how the application state evolved over time.
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention of the 'verbs' from that domain into this standard architecture. If performance is an important requirement as well, then you might have discovered that an Object-Relational Mapper and a relational database are not always the best solution.
One of the main reasons for this is the fact that the interests of a consistent domain that takes into account the many business rules, and those of data reporting and presentation are conflicting. That’s why Betrand Meyer introduced the Command Query Separation principle.
An architecture based on this principle combined with the Event Sourcing concept provides the ideal architecture for building high-performance systems designed using DDD. Well-known bloggers like Udi Dahan and Greg Young have already spent quite a lot of of posts on this, and this year’s Developer Days had some coverage as well.
But how do you build such a system with the. NET framework? Is it really as complex as some claim, or is just different work?
Developing functional domain models with event sourcing (sbtb, sbtb2015)Chris Richardson
This document discusses developing functional domain models using event sourcing. It covers why event sourcing is useful, how to design domain models and events, and how event sourcing relates to service design. The document discusses using familiar domain-driven design concepts like entities, value objects, aggregates and repositories with event sourcing. It also provides examples of implementing event sourcing in Scala.
This document discusses Aspect Oriented Programming (AOP) using the Spring Framework. It defines AOP as a programming paradigm that extends OOP by enabling modularization of crosscutting concerns. It then discusses how AOP addresses common crosscutting concerns like logging, validation, caching, and transactions through aspects, pointcuts, and advice. It also compares Spring AOP and AspectJ, and shows how to implement AOP in Spring using annotations or XML.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
Introduction to Event Sourcing and Challenges such as consistency, validation and concurrent updates.
The talk has been delivered at the Microservice Meetup in Munich.
Event sourcing stores all state as a sequence of events and only stores facts rather than the current application state. It focuses on designing the domain model strategically first before considering data storage or other implementation details. Event sourcing is more complex than traditional approaches but can provide benefits for certain domains by making it easier to understand how the application state evolved over time.
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention of the 'verbs' from that domain into this standard architecture. If performance is an important requirement as well, then you might have discovered that an Object-Relational Mapper and a relational database are not always the best solution.
One of the main reasons for this is the fact that the interests of a consistent domain that takes into account the many business rules, and those of data reporting and presentation are conflicting. That’s why Betrand Meyer introduced the Command Query Separation principle.
An architecture based on this principle combined with the Event Sourcing concept provides the ideal architecture for building high-performance systems designed using DDD. Well-known bloggers like Udi Dahan and Greg Young have already spent quite a lot of of posts on this, and this year’s Developer Days had some coverage as well.
But how do you build such a system with the. NET framework? Is it really as complex as some claim, or is just different work?
Developing functional domain models with event sourcing (sbtb, sbtb2015)Chris Richardson
This document discusses developing functional domain models using event sourcing. It covers why event sourcing is useful, how to design domain models and events, and how event sourcing relates to service design. The document discusses using familiar domain-driven design concepts like entities, value objects, aggregates and repositories with event sourcing. It also provides examples of implementing event sourcing in Scala.
This document discusses Aspect Oriented Programming (AOP) using the Spring Framework. It defines AOP as a programming paradigm that extends OOP by enabling modularization of crosscutting concerns. It then discusses how AOP addresses common crosscutting concerns like logging, validation, caching, and transactions through aspects, pointcuts, and advice. It also compares Spring AOP and AspectJ, and shows how to implement AOP in Spring using annotations or XML.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
A Visual Introduction to Event Sourcing and CQRS by Lorenzo NicoraOpenCredo
Slides from Lorenzo's speech at Haufe-Lexware Microservice Architecture Day, in Freiburg. A pictorial introduction to the concepts of Command and Event Sourcing, and CQRS, as persistence model for modern, scalable and distributed applications.
MongoDB WiredTiger Internals: Journey To TransactionsMydbops
MongoDB has adapted transaction feature (ACID Properties) in MongoDB 4.0. This talk focuses on the internals of how MongoDB adapted the ACID properties with Weird Tiger Engine. Weird tiger offers more future possibilities for MongoDB. This tech talk was presented at Mydbops Database Meetup on 27-04-2019 by Manosh Malai Senior Devops/NoSQL Consultant with Mydbops and Ranjith Database Administrator with Mydbops.
Developing event-driven microservices with event sourcing and CQRS (phillyete)Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC. In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
Spring Data is a high level SpringSource project whose purpose is to unify and ease the access to different kinds of persistence stores, both relational database systems and NoSQL data stores.
Grokking Techtalk #37: Data intensive problemGrokking VN
At some point in your software engineer career, you will have to deal with data and your success depends on how big the data that your software can deal with. From a simple problem that requires processing a large amount of data, this talk will present to you how to approach this kind of issue and how to design and choose an efficient solution.
About speaker:
Hồ is Senior Software Engineer at AXON where he helps design and develops complex distributed systems, including image and video encoding, distributed file conversion system. Besides coding, Ho likes to read manga and meet friends in his free time.
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
Les systèmes distribués ont largement évolués ces 10 dernières années, passant d’énormes applications monolithiques à de petits containers de services, apportant plus de souplesse et d’agilité au sein des systèmes d’information.
Le terme « Architecture microservice » a vu le jour pour décrire cette manière particulière de concevoir des applications logicielles.
Bien qu’il n’y ait pas de définition précise de ce style d’architecture, elles ont un certain nombre de caractéristiques communes basées autour de l’organisation de l’entreprise, du déploiement automatisé et de la décentralisation du contrôle du langage et des données.
Seulement, développer ces systèmes peut tourner au véritable casse-tête. Je vous propose donc un tour des concepts et différentes caractéristiques de ce type d’architecture, des bonnes et mauvaises pratiques, de la création jusqu’au déploiement des applications.
Should you use traditional REST APIs to bind services together? Or is it better to use a richer, more loosely-coupled protocol? This talk will dig into how we piece services together in event driven systems, how we use a distributed log (event hub) to create a central, persistent history of events and what benefits we achieve from doing so. Apache Kafka is a perfect match for building such an asynchronous, loosely-coupled event-driven backbone. Events trigger processing logic, which can be implemented in a more traditional as well as in a stream processing fashion. The talk will show the difference between a request-driven and event-driven communication and show when to use which. It highlights how the modern stream processing systems can be used to
hold state both internally as well as in a database and how this state can be used to further increase independence of other services, the primary goal of a Microservices architecture.
The document discusses dependency injection with Spring. It defines dependency injection as a design pattern that allows removing hardcoded dependencies and changing them at runtime. It presents different types of dependency injection like setter and constructor injection. It demonstrates how to configure dependency injection with Spring using XML configuration files or annotations and inject dependencies into objects. Benefits of dependency injection include easier testing, improved reusability, and cleaner code.
This document discusses Command Query Responsibility Segregation (CQRS), a pattern for building scalable, multi-user systems. CQRS separates commands and queries by using different models for updates and reads. This allows optimization of read and write operations independently to improve scalability. The document outlines common CQRS components like commands, events, and persistent view models, and provides guidelines for when to use CQRS, such as for large, distributed systems with complex business logic.
Presented at All Thing Open RTP Meetup
Presented by Brent Laster
Abstract: Kubernetes is the leading way to run and manage your containerized workloads across any cloud or on-premises environment. It provides an automated, reliable way to execute the services, deployments, etc. that make up your application. But what happens when running those doesn’t go as you’d expect, or the system isn’t happy with what you’re trying to get to run? How do you figure out what’s going wrong, track down the root causes, figure out a solution, and get things working again?
In this hands-on three-hour workshop, we’ll look at some basic and advanced ways to debug problems that you may run into with Kubernetes. You’ll learn techniques from basic ways to zero in on root cause to log analysis to using advanced tools such as creating your own debug containers. Armed with these skills, you’ll be in a position to deal with day-to-day issues with running workloads in Kubernetes and keep them from becoming disruptions and/or show-stoppers.
This document discusses domain-driven design (DDD) concepts for transforming a monolithic application to microservices, including:
1. Classifying applications into areas like lift and shift, containerize, refactor, and expose APIs to prioritize high business value, low complexity projects.
2. Focusing on shorter duration projects from specifications to operations.
3. Designing around business capabilities, processes, and forming teams aligned to capabilities rather than technology.
4. Key DDD concepts like ubiquitous language, bounded contexts, and context maps to decompose the domain model into independently deployable microservices.
MongoDB World 2019: MongoDB Read Isolation: Making Your Reads Clean, Committe...MongoDB
Isolation, the I in ACID, determines how/when the changes made by one operation become visible to another. Relational databases provide four isolation levels (uncommitted, committed, repeatable reads, and serialiable) to enable the trade off of performance versus the level of cross operation change visibility. In contrast, MongoDB’s isolation levels are controlled by using readConcerns and transactions. This talk will describe how the relational isolation levels compare to MongoDB’s isolation guarantees, how you configure MongoDB to provide the desired isolation level, and the performance implications.
The document provides an introduction and overview of MongoDB, including what NoSQL is, the different types of NoSQL databases, when to use MongoDB, its key features like scalability and flexibility, how to install and use basic commands like creating databases and collections, and references for further learning.
Spring Boot+Kafka: the New Enterprise PlatformVMware Tanzu
This document discusses how Spring Boot and Kafka can form the basis of a new enterprise application platform focused on continuous delivery, event-driven architectures, and streaming data. It provides examples of companies that have successfully adopted this approach, such as Netflix transitioning to Spring Boot and a banking brand building a new core banking system using Spring Streams and Kafka. The document advocates an "event-first" and microservices-oriented mindset enabled by a streaming data platform and suggests that Spring Boot, Kafka, and related technologies provide a turnkey solution for implementing this new application development approach at large enterprises.
Spring Framework Petclinic sample applicationAntoine Rey
Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications.
The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).
Visual Studio 2015 for Web Developers - Codestock 2015 slidesJeffrey T. Fritz
Visual Studio 2015 for Web Developers provides an overview of new features for web development in Visual Studio 2015 including improved support for package managers, task runners, and extensions. The presentation discusses how Visual Studio 2015 aims to make these tools first-class citizens by integrating them directly into Solution Explorer and adding a new Task Runner Explorer window to feel natural to web developers while remaining extensible and optional. A demo then shows various extensions used for tasks like adding files, opening command lines, snippets, image optimization, and multi-editing.
Visual Studio 2015 introduces a new setup experience, the ability to sign into multiple accounts, target multiple platforms including Xamarin mobile apps and Unity games, connect apps to Azure and other services, customize window layouts, use live code analysis with Roslyn, share projects between apps, and get IntelliSense for Bower and NPM packages directly in the code editor. The document provides an overview of new features in Visual Studio 2015 presented by Microsoft MVP Lohith G N.
A Visual Introduction to Event Sourcing and CQRS by Lorenzo NicoraOpenCredo
Slides from Lorenzo's speech at Haufe-Lexware Microservice Architecture Day, in Freiburg. A pictorial introduction to the concepts of Command and Event Sourcing, and CQRS, as persistence model for modern, scalable and distributed applications.
MongoDB WiredTiger Internals: Journey To TransactionsMydbops
MongoDB has adapted transaction feature (ACID Properties) in MongoDB 4.0. This talk focuses on the internals of how MongoDB adapted the ACID properties with Weird Tiger Engine. Weird tiger offers more future possibilities for MongoDB. This tech talk was presented at Mydbops Database Meetup on 27-04-2019 by Manosh Malai Senior Devops/NoSQL Consultant with Mydbops and Ranjith Database Administrator with Mydbops.
Developing event-driven microservices with event sourcing and CQRS (phillyete)Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC. In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
Spring Data is a high level SpringSource project whose purpose is to unify and ease the access to different kinds of persistence stores, both relational database systems and NoSQL data stores.
Grokking Techtalk #37: Data intensive problemGrokking VN
At some point in your software engineer career, you will have to deal with data and your success depends on how big the data that your software can deal with. From a simple problem that requires processing a large amount of data, this talk will present to you how to approach this kind of issue and how to design and choose an efficient solution.
About speaker:
Hồ is Senior Software Engineer at AXON where he helps design and develops complex distributed systems, including image and video encoding, distributed file conversion system. Besides coding, Ho likes to read manga and meet friends in his free time.
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
Les systèmes distribués ont largement évolués ces 10 dernières années, passant d’énormes applications monolithiques à de petits containers de services, apportant plus de souplesse et d’agilité au sein des systèmes d’information.
Le terme « Architecture microservice » a vu le jour pour décrire cette manière particulière de concevoir des applications logicielles.
Bien qu’il n’y ait pas de définition précise de ce style d’architecture, elles ont un certain nombre de caractéristiques communes basées autour de l’organisation de l’entreprise, du déploiement automatisé et de la décentralisation du contrôle du langage et des données.
Seulement, développer ces systèmes peut tourner au véritable casse-tête. Je vous propose donc un tour des concepts et différentes caractéristiques de ce type d’architecture, des bonnes et mauvaises pratiques, de la création jusqu’au déploiement des applications.
Should you use traditional REST APIs to bind services together? Or is it better to use a richer, more loosely-coupled protocol? This talk will dig into how we piece services together in event driven systems, how we use a distributed log (event hub) to create a central, persistent history of events and what benefits we achieve from doing so. Apache Kafka is a perfect match for building such an asynchronous, loosely-coupled event-driven backbone. Events trigger processing logic, which can be implemented in a more traditional as well as in a stream processing fashion. The talk will show the difference between a request-driven and event-driven communication and show when to use which. It highlights how the modern stream processing systems can be used to
hold state both internally as well as in a database and how this state can be used to further increase independence of other services, the primary goal of a Microservices architecture.
The document discusses dependency injection with Spring. It defines dependency injection as a design pattern that allows removing hardcoded dependencies and changing them at runtime. It presents different types of dependency injection like setter and constructor injection. It demonstrates how to configure dependency injection with Spring using XML configuration files or annotations and inject dependencies into objects. Benefits of dependency injection include easier testing, improved reusability, and cleaner code.
This document discusses Command Query Responsibility Segregation (CQRS), a pattern for building scalable, multi-user systems. CQRS separates commands and queries by using different models for updates and reads. This allows optimization of read and write operations independently to improve scalability. The document outlines common CQRS components like commands, events, and persistent view models, and provides guidelines for when to use CQRS, such as for large, distributed systems with complex business logic.
Presented at All Thing Open RTP Meetup
Presented by Brent Laster
Abstract: Kubernetes is the leading way to run and manage your containerized workloads across any cloud or on-premises environment. It provides an automated, reliable way to execute the services, deployments, etc. that make up your application. But what happens when running those doesn’t go as you’d expect, or the system isn’t happy with what you’re trying to get to run? How do you figure out what’s going wrong, track down the root causes, figure out a solution, and get things working again?
In this hands-on three-hour workshop, we’ll look at some basic and advanced ways to debug problems that you may run into with Kubernetes. You’ll learn techniques from basic ways to zero in on root cause to log analysis to using advanced tools such as creating your own debug containers. Armed with these skills, you’ll be in a position to deal with day-to-day issues with running workloads in Kubernetes and keep them from becoming disruptions and/or show-stoppers.
This document discusses domain-driven design (DDD) concepts for transforming a monolithic application to microservices, including:
1. Classifying applications into areas like lift and shift, containerize, refactor, and expose APIs to prioritize high business value, low complexity projects.
2. Focusing on shorter duration projects from specifications to operations.
3. Designing around business capabilities, processes, and forming teams aligned to capabilities rather than technology.
4. Key DDD concepts like ubiquitous language, bounded contexts, and context maps to decompose the domain model into independently deployable microservices.
MongoDB World 2019: MongoDB Read Isolation: Making Your Reads Clean, Committe...MongoDB
Isolation, the I in ACID, determines how/when the changes made by one operation become visible to another. Relational databases provide four isolation levels (uncommitted, committed, repeatable reads, and serialiable) to enable the trade off of performance versus the level of cross operation change visibility. In contrast, MongoDB’s isolation levels are controlled by using readConcerns and transactions. This talk will describe how the relational isolation levels compare to MongoDB’s isolation guarantees, how you configure MongoDB to provide the desired isolation level, and the performance implications.
The document provides an introduction and overview of MongoDB, including what NoSQL is, the different types of NoSQL databases, when to use MongoDB, its key features like scalability and flexibility, how to install and use basic commands like creating databases and collections, and references for further learning.
Spring Boot+Kafka: the New Enterprise PlatformVMware Tanzu
This document discusses how Spring Boot and Kafka can form the basis of a new enterprise application platform focused on continuous delivery, event-driven architectures, and streaming data. It provides examples of companies that have successfully adopted this approach, such as Netflix transitioning to Spring Boot and a banking brand building a new core banking system using Spring Streams and Kafka. The document advocates an "event-first" and microservices-oriented mindset enabled by a streaming data platform and suggests that Spring Boot, Kafka, and related technologies provide a turnkey solution for implementing this new application development approach at large enterprises.
Spring Framework Petclinic sample applicationAntoine Rey
Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications.
The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).
Visual Studio 2015 for Web Developers - Codestock 2015 slidesJeffrey T. Fritz
Visual Studio 2015 for Web Developers provides an overview of new features for web development in Visual Studio 2015 including improved support for package managers, task runners, and extensions. The presentation discusses how Visual Studio 2015 aims to make these tools first-class citizens by integrating them directly into Solution Explorer and adding a new Task Runner Explorer window to feel natural to web developers while remaining extensible and optional. A demo then shows various extensions used for tasks like adding files, opening command lines, snippets, image optimization, and multi-editing.
Visual Studio 2015 introduces a new setup experience, the ability to sign into multiple accounts, target multiple platforms including Xamarin mobile apps and Unity games, connect apps to Azure and other services, customize window layouts, use live code analysis with Roslyn, share projects between apps, and get IntelliSense for Bower and NPM packages directly in the code editor. The document provides an overview of new features in Visual Studio 2015 presented by Microsoft MVP Lohith G N.
The document discusses improvements to web deployment in Visual Studio 2010 and .NET Framework 4, including:
- Transforming web.config settings for different environments using transformations
- Packaging applications for deployment along with code, data, and configuration settings
- Deploying packages to IIS using tools like MS Deploy that synchronize and migrate applications remotely with a "one-click" process
This document provides an introduction and overview of the C# programming language. It discusses what C# is, its origins as part of Microsoft's .NET framework, and how to develop C# programs using Visual Studio. It also covers different versions of C# and the .NET frameworks it corresponds to. A simple "Hello World" C# program is shown as an example. The document compares C# and Java, noting differences in their platforms, technical features, and support for object-oriented programming. Finally, it lists some common applications of C# like desktop and web development.
The document provides an overview of ADO.NET and its core classes:
- ADO.NET uses datasets to store data from a database in memory and data provider objects like connections, commands, and data adapters to retrieve and update data in the database.
- The .NET Framework includes the SQL Server and OLE DB data providers, which provide classes like SqlConnection and OleDbConnection to connect to databases.
- Core classes like SqlCommand represent SQL statements, and SqlDataAdapter links commands and connections to datasets to load and save data.
Visual studio 2015 and .net core 5 – get ready to rumbleTadeusz Balcer
Starting from Visual Studio 2015, .NET Framework starts to become open source and cross-platform (!). Besides the newest features of probably the best known IDE, you will see how .NET Framework becomes widely available on Github and how much you can squeeze from .NET on Mac and Linux. We will also look how the most popular packages (like ASP.NET MVC and Entity Framework) try to fit to this announcement and say bye, bye to nightmares with .sln and .csproj files.
The document discusses tools for working with big data without needing to know Java. It states that Hadoop can be learned without Java through tools like Pig and Hive that provide high-level languages. Pig uses Pig Latin to simplify complex MapReduce programs, allowing data operations like filters, joins and sorting with only 10 lines of code compared to 200 lines of Java. Hive also does not require Java knowledge, defining a SQL-like language called HiveQL to query and analyze data. The document provides examples of how Pig and Hive can be used for tasks like predictive modeling without Java coding.
Big Data Architectural Patterns and Best Practices on AWSAmazon Web Services
In this session, we simplify big data processing as a data bus comprising various stages: ingest, store, process, and visualize. John Pignata, AWS Startup Solutions Architect, will discuss how to choose the right technology in each stage based on criteria such as data structure, query latency, cost, request rate, item size, data volume, durability, and so on. He will provide reference architecture, design patterns, and best practices for assembling these technologies to solve your big data problems at the right cost.
This document provides an overview and introduction to NoSQL databases. It begins with an agenda that explores key-value, document, column family, and graph databases. For each type, 1-2 specific databases are discussed in more detail, including their origins, features, and use cases. Key databases mentioned include Voldemort, CouchDB, MongoDB, HBase, Cassandra, and Neo4j. The document concludes with references for further reading on NoSQL databases and related topics.
Big data refers to the massive amounts of unstructured data that are growing exponentially. Hadoop is an open-source framework that allows processing and storing large data sets across clusters of commodity hardware. It provides reliability and scalability through its distributed file system HDFS and MapReduce programming model. The Hadoop ecosystem includes components like Hive, Pig, HBase, Flume, Oozie, and Mahout that provide SQL-like queries, data flows, NoSQL capabilities, data ingestion, workflows, and machine learning. Microsoft integrates Hadoop with its BI and analytics tools to enable insights from diverse data sources.
DAMA Webinar - Big and Little Data QualityDATAVERSITY
While technological innovation brings constant change to the data landscape, many organizations still struggle with the basics: ensuring they have reliable, high quality data. In health care, the promise of insight to be gained through analytics is dependent on ensuring the interactions between providers and patients are recorded accurately and completely. While traditional health care data is dependent on person-to-person contact, new technologies are emerging that change how health care is delivered and how health care data is captured, stored, accessed and used. Using health care as a lens through which to understand the emergence of big data, this presentation will ask the audience to think about data in old and new ways in order to gain insight about how to improve the quality of data, regardless of size.
This document outlines Seth Familian's presentation on working with big data. It discusses key concepts like what constitutes big data, popular tools for working with big data like Splunk and Segment, and techniques for building dashboards and inferring customer segments from large datasets. Specific examples are provided of automated data flows that extract, load, transform and analyze big data from various sources to generate insights and populate customized dashboards.
This presentation, by big data guru Bernard Marr, outlines in simple terms what Big Data is and how it is used today. It covers the 5 V's of Big Data as well as a number of high value use cases.
An immersive workshop at General Assembly, SF. I typically teach this workshop at General Assembly, San Francisco. To see a list of my upcoming classes, visit https://generalassemb.ly/instructors/seth-familian/4813
I also teach this workshop as a private lunch-and-learn or half-day immersive session for corporate clients. To learn more about pricing and availability, please contact me at http://familian1.com
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
Building Microservices with Scala, functional domain models and Spring Boot -...JAXLondon2014
This document summarizes Chris Richardson's presentation on building microservices with Scala, functional domain models, and Spring Boot. The presentation discusses using event sourcing to build event-driven microservices that are eventually consistent. It describes how to design aggregates that generate domain events, implement an event store to persist events immutably, and use event subscribers to update other services and materialized views. The document also covers challenges like handling duplicate events and implementing queries in an eventually consistent system.
#JaxLondon: Building microservices with Scala, functional domain models and S...Chris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Building and deploying microservices with event sourcing, CQRS and Docker (QC...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
Building and Deploying Microservices with Event Sourcing, CQRS and DockerC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1Qyjicw.
Chris Richardson shares his experiences developing and deploying a microservices-based application. Filmed at qconsf.com.
Chris Richardson is a developer and architect. He is a Java Champion and the author of POJOs in Action, which describes how to build enterprise Java applications with frameworks such as Spring and Hibernate.
Building microservices with Scala, functional domain models and Spring Boot (...Chris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Chris Richardson
The document discusses how to develop event-driven microservices using event sourcing and Command Query Responsibility Segregation (CQRS). It describes event sourcing, where events are stored instead of the current application state. Services update their own state by subscribing to events. CQRS is used to separate read models from write models so that queries can be optimized with materialized views of aggregated data. Implementing queries in an event-sourced application involves using separate query-side microservices to update and retrieve materialized views based on domain events from the event store.
Bootstrapping - Session 1 - Your First Week with Amazon EC2Amazon Web Services
Amazon Elastic Compute Cloud (Amazon EC2) provides resizable compute capacity in the cloud and is often the starting point for your first week using AWS. This presentation will introduce some essential getting started tips and walk through the journey into AWS, the basic technologies you need to understand and why you should use them. You'll hear real a customer's first year journey and benefit from what they would tell you to do in your first week as they impart the lessons learned, challenges faced and opportunities presented.
Ryan Shuttleworth, Technical Evangelist, AWS
Andrew Dunn, CTO and Nick Hills, Ops Manager, Compliant Phones
About The Event-Driven Data Layer & Adobe AnalyticsKevin Haag
This document summarizes Kevin Haag's presentation about event-driven data layers and Adobe Analytics. It discusses different types of data layers including the event-driven data layer (EDDL) and customer experience digital data layer (CEDDL). It also describes how Adobe products like Launch and DTM previously did not have a built-in data layer model, but now the Data Layer Manager extension allows populating custom variables and triggering rules based on data layer events. Resources for learning more about data layers and analytics are also provided.
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...confluent
In this talk we’ll look at the relationship between three of the most disruptive software engineering paradigms: event sourcing, stream processing and serverless. We’ll debunk some of the myths around event sourcing. We’ll look at the inevitability of event-driven programming in the serverless space and we’ll see how stream processing links these two concepts together with a single ‘database for events’. As the story unfolds we’ll dive into some use cases, examine the practicalities of each approach-particularly the stateful elements-and finally extrapolate how their future relationship is likely to unfold. Key takeaways include: The different flavors of event sourcing and where their value lies. The difference between stream processing at application- and infrastructure-levels. The relationship between stream processors and serverless functions. The practical limits of storing data in Kafka and stream processors like KSQL."
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...confluent
In this talk we'll look at the relationship between three of the most disruptive software engineering paradigms: event sourcing, stream processing and serverless. We'll debunk some of the myths around event sourcing. We'll look at the inevitability of event-driven programming in the serverless space and we'll see how stream processing links these two concepts together with a single 'database for events'. As the story unfolds we'll dive into some use cases, examine the practicalities of each approach-particularly the stateful elements-and finally extrapolate how their future relationship is likely to unfold. Key takeaways include: The different flavors of event sourcing and where their value lies. The difference between stream processing at application- and infrastructure-levels. The relationship between stream processors and serverless functions. The practical limits of storing data in Kafka and stream processors like KSQL.
The document discusses various Microsoft technologies for working with data including:
- Entity Framework which provides an object-relational mapper (ORM) for ADO.NET and allows mapping entities and database tables.
- ADO.NET Data Services which exposes data and methods through RESTful web services using OData protocols and supports various data sources.
- Differences between LINQ to SQL and LINQ to Entities where the latter supports more capabilities but both allow querying data with LINQ.
This document discusses Microsoft Azure cloud services including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). It provides examples of Azure services like virtual machines, web apps, SQL databases, and machine learning. It also demonstrates how to perform tasks like uploading files to Azure blob storage using different programming languages.
This document provides an agenda and overview for a presentation on application logging best practices. It discusses the reality of growing volumes of event log data from various sources. While event logs currently have some structure, the structure is inconsistent and non-standard. The document argues that with proper interpretation, event logs can provide real business value by offering insights into operations, security, business intelligence, and customer experience. It presents an approach using Splunk to gain intelligence from application logs quickly through late structure binding and schema-less searching versus traditional analytics with early structure binding. The document also discusses liberating application data through purposeful semantic logging with clear key-value pairs.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Otávio Santana
Java has a large number of tools and frameworks to facilitate integration with databases, microservices, and so on. These tools have evolved considerably. It all started with class integrated with XML files and has undergone significant evolution with reflections and annotations within the class definitions. In the cloud-native scenario, requirements have changed and this impacts applications in ways that weren't critical before. For example, cold starts and boot time wasn't critical with application servers but is crucial in serverless and microservices. The objective of this presentation is to talk about how these frameworks behave in the native cloud age and they affect Jakarta EE.
The document provides an overview of Agile, DevOps and Cloud Management from a security, risk management and audit compliance perspective. It discusses how the IT industry paradigm is shifting towards microservices, containers, continuous delivery and cloud platforms. DevOps is described as development and operations engineers participating together in the entire service lifecycle. Key differences in DevOps include changes to configuration management, release and change management, and event monitoring. Factors for DevOps success include culture, collaboration, eliminating waste, unified processes, tooling and automation.
"Offline mode for a mobile application, redux on server and a little bit abou...Viktor Turskyi
The talk covers the following topics:
1. Introduction to event sourcing.
2. How event sourcing and Redux are similar.
3. How to implement offline mode for React Native application.
4. How everything from above was run in a production.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/temporal-event-neural-networks-a-more-efficient-alternative-to-the-transformer-a-presentation-from-brainchip/
Chris Jones, Director of Product Management at BrainChip , presents the “Temporal Event Neural Networks: A More Efficient Alternative to the Transformer” tutorial at the May 2024 Embedded Vision Summit.
The expansion of AI services necessitates enhanced computational capabilities on edge devices. Temporal Event Neural Networks (TENNs), developed by BrainChip, represent a novel and highly efficient state-space network. TENNs demonstrate exceptional proficiency in handling multi-dimensional streaming data, facilitating advancements in object detection, action recognition, speech enhancement and language model/sequence generation. Through the utilization of polynomial-based continuous convolutions, TENNs streamline models, expedite training processes and significantly diminish memory requirements, achieving notable reductions of up to 50x in parameters and 5,000x in energy consumption compared to prevailing methodologies like transformers.
Integration with BrainChip’s Akida neuromorphic hardware IP further enhances TENNs’ capabilities, enabling the realization of highly capable, portable and passively cooled edge devices. This presentation delves into the technical innovations underlying TENNs, presents real-world benchmarks, and elucidates how this cutting-edge approach is positioned to revolutionize edge AI across diverse applications.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
A Comprehensive Guide to DeFi Development Services in 2024Intelisync
DeFi represents a paradigm shift in the financial industry. Instead of relying on traditional, centralized institutions like banks, DeFi leverages blockchain technology to create a decentralized network of financial services. This means that financial transactions can occur directly between parties, without intermediaries, using smart contracts on platforms like Ethereum.
In 2024, we are witnessing an explosion of new DeFi projects and protocols, each pushing the boundaries of what’s possible in finance.
In summary, DeFi in 2024 is not just a trend; it’s a revolution that democratizes finance, enhances security and transparency, and fosters continuous innovation. As we proceed through this presentation, we'll explore the various components and services of DeFi in detail, shedding light on how they are transforming the financial landscape.
At Intelisync, we specialize in providing comprehensive DeFi development services tailored to meet the unique needs of our clients. From smart contract development to dApp creation and security audits, we ensure that your DeFi project is built with innovation, security, and scalability in mind. Trust Intelisync to guide you through the intricate landscape of decentralized finance and unlock the full potential of blockchain technology.
Ready to take your DeFi project to the next level? Partner with Intelisync for expert DeFi development services today!
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
2. Jeffrey T. Fritz
ASP.Net Developer Evangelist for Telerik
AJAX controls
Microsoft MVP, ASPInsider
Tech Ed 2012 Speaker Idol Finalist, 2013
Runner-up
15 years of web development experience
CodeProject.tv + Pluralsight author
(coming soon!)
May 2013 MSDN Magazine: One ASP.Net
DotNetRocks #855
Yet Another Podcast #98, #106
3. Level setting: n-tier architecture
Event Sourcing – definition, benefits,
challenges
How do I get started?
How do I audit?
Rebuilding and Reporting Samples
5. Event Sourcing: An architectural pattern
which warrants that your entities do not track
their internal state by means of direct
serialization or O/R mapping, but by means
of reading and committing events to an event
store
Event: an immutable object that describes a
change that has occurred to an entity.
6. Entities are not stored as a given state in time
Changes to the entities are persisted
Stored in the order changes were applied to
the object
No concern for ‘prior state’ of the entity
11. Simplified data access
◦ Append-only data store
◦ Easy to partition
◦ Easy to replicate
Event structure allows for greater use of
‘ubiquitous language’
Reporting requirements are required to be
stored separately
12. Performance
◦ Documented performance on an i7 laptop with SSD
storage:
15,000 writes / second
50,000 reads / second
◦ Aggressively cache query results
Data never changes
13. Testing
◦ Given (Collection of Events)
◦ When (Action)
◦ Then (Events expected)
No duplicate storage of data
◦ Current State
◦ Audit log
14. Tivo for your entities
◦ Trivial to ‘replay’ the events to a given point in time
Offline processing
Conflict Management
15. Not storing data in relational structure
◦ Can use RDBMS as a store
Reporting is NOT immediately available
Difficult to migrate a legacy app to
Harder to sell to an organization
16. ObjectID Change
Date
Change
User
Field Old Value New Value
1 9/20/12 Jeff Attend 0 1
ObjectID Version DateStamp Event
1 5 9/20/12 RsvpChanged {
Name: Jeff,
Attending: true
}
17. Jonathan Oliver EventStore
◦ .Net based tool
◦ Supports storage in: MySQL, MSSql, SQLite, Access,
Sql Azure, Amazon RDS, Oracle, Sybase, Postgres,
DB2, RavenDb, MongoDb, CouchDb, and LOTS more
◦ http://github.com/joliver/EventStore
Greg Young Event Store
◦ JSON based event store
◦ Proprietary storage engine
◦ RESTful access
◦ http://geteventstore.com
19. AuditLog is just a dump of events
Call ToString on each event
Demo – NerdDinner AuditLog
20. Data can be “re-projected” into any format
New data can be discovered by the projection
that wouldn’t normally be visible in 3rd
normal form
Alternate storage of data in format for the
report desired