Developing polyglot persistence applications (SpringOne India 2012)Chris Richardson
This document discusses using polyglot persistence, which involves using multiple data storage technologies together to address different application needs. It describes using Redis as a cache to improve performance for a food delivery application. The document proposes building "materialized views" in Redis by denormalizing and indexing data to optimize queries for finding available restaurants. It outlines synchronizing data between the MySQL database and Redis cache to maintain consistency.
Developing polyglot applications on Cloud Foundry (#oredev 2012)Chris Richardson
Developing web applications used to be simple. Your single war-file web application served up HTML to a desktop browser and used a relational database. Today however, web applications are much more complex: the front-end uses HTML5 and NodeJS, the middle tier is decomposed into multiple services, and the back-end uses a mix of SQL and NoSQL databases. Developing these kind of applications can be challenging since there are so many moving parts that need to be correctly installed and configured. Deployment is even more difficult.
In this talk, you will learn why we need to build applications with this architectural style and how Cloud Foundry, which is modern, multi-lingual, multi-service, extensible open-source PaaS, can help. We will talk about how to develop modern applications that run on Cloud Foundry and cover what’s new and different about the cloud environment. You will learn how your application can consume the various services that are provided by Cloud Foundry. We will discuss the various ways of using Cloud Foundry including the Micro Cloud that runs on a laptop as well as the hosted CloudFoundry.com.
NoSQL databases such as Redis, MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offer significantly better scalability and performance. However, using a NoSQL database means giving up the benefits of the relational model such as SQL, constraints and ACID transactions. For some applications, the solution is polyglot persistence: using SQL and NoSQL databases together.
In this talk, you will learn about the benefits and drawbacks of polyglot persistence and how to design applications that use this approach. We will explore the architecture and implementation of an example application that uses MySQL as the system of record and Redis as a very high-performance database that handles queries from the front-end. You will learn about mechanisms for maintaining consistency across the various databases.
Developing polyglot persistence applications (SpringOne China 2012)Chris Richardson
The document discusses using Redis to optimize queries in polyglot persistence applications by creating materialized views that denormalize and index data from a relational database into Redis for faster access. It provides an example of using Redis sorted sets to index available restaurant data from a MySQL database in a way that allows fast retrieval of open restaurants for a given zip code and time. The approach simplifies queries by eliminating joins and reducing data returned through concatenation and indexing techniques.
Developing modular, polyglot applications with Spring (SpringOne India 2012)Chris Richardson
This document discusses developing modular, polyglot applications using Spring. It describes how to refactor a monolithic application into modular microservices along functional boundaries (Y-axis scaling). This improves scalability, enables independent development and deployment of each service, and allows adopting different technologies for each service. Spring is well-suited for building these types of applications since it supports a variety of languages and frameworks and its programming model aligns well with developing microservices.
MapReduce with Apache Hadoop is a framework for distributed processing of large datasets across clusters of computers. It allows for parallel processing of data, fault tolerance, and scalability. The framework includes Hadoop Distributed File System (HDFS) for reliable storage, and MapReduce for distributed computing. MapReduce programs can be written in various languages and frameworks provide higher-level interfaces like Pig and Hive.
The document summarizes the evolution of Flipkart's website architecture from 2007 to 2012. Key issues addressed included slow website performance due to slow database queries, isolating reads from writes, isolating production traffic from analytics jobs, implementing caching which introduced complexity, isolating the impact of slow external services, handling spikes in traffic, and separating systems to isolate internal from external requests. The evolution involved learning lessons around scaling databases, isolating systems, managing caching complications, and ensuring systems are not overloaded.
This document provides an overview and introduction to NoSQL databases. It defines NoSQL as non-relational data stores that break from the traditional relational database model. The document notes that NoSQL encompasses different techniques, data types, and use cases rather than one single approach. It then discusses different NoSQL families (graph, key-value, document), flavors (standalone, distributed, embedded), and examples of products that fit within these categories. The document emphasizes priorities and tradeoffs to consider like availability, scalability, and ease of adoption. It provides Riak and CouchDB as examples that emphasize availability and scalability through replication and storage distribution.
Methods of NoSQL database systems benchmarkingТранслируем.бел
Ilya Bakulin presents methods for benchmarking NoSQL database systems. He discusses the Yahoo Cloud Serving Benchmark (YCSB) framework, which allows benchmarking of NoSQL databases using common workloads. YCSB issues simple operations like insert, update, delete and scan without using SQL. It has adapters for popular NoSQL systems and allows custom workloads and databases to be added. Bakulin demonstrates YCSB by benchmarking Cassandra and sharded MySQL under different read/write ratios. Cassandra performs better in a write-heavy workload while MySQL is better for reads.
Polyglot Persistence - Two Great Tastes That Taste Great TogetherJohn Wood
The days of the relational database being a one-stop-shop for all of your persistence needs are over. Although NoSQL databases address some issues that can’t be addressed by relational databases, the opposite is true as well. The relational database offers an unparalleled feature set and rock solid stability. One cannot underestimate the importance of using the right tool for the job, and for some jobs, one tool is not enough. This talk focuses on the strength and weaknesses of both relational and NoSQL databases, the benefits and challenges of polyglot persistence, and examples of polyglot persistence in the wild.
These slides were presented at WindyCityDB 2010.
The document discusses Riak, a decentralized key-value store that is well-suited for web applications, describing how it stores and retrieves data across a distributed cluster of nodes in a way that provides high availability and resolves conflicts. Riak stores data in buckets and keys, replicates data across multiple nodes for availability, uses consistent hashing to determine node ownership of data, and exposes conflicts as sibling objects to be resolved in application logic.
NoSQL overview presentation with details on Riak and CouchDB.
Presented at Qbranch CODE Night 2010-04-15.
Thanks to @frli01 for arranging and @xlson for invitation.
High-Performance Storage Services with HailDB and Javasunnygleason
This document summarizes an approach to providing high-performance storage services using Java and HailDB. It discusses using the optimized "guts" of MySQL without needing to go through JDBC and SQL. It presents HailDB as a storage engine alternative to NoSQL options like Voldemort. It describes integrating HailDB with Java using JNA, building a REST API on top called St8, and examples of nifty applications like graph stores and counters. It concludes with discussing future work like improving packaging, online backup, and exploring JNI bindings.
This document provides an introduction to using Spring Data to simplify development of NoSQL applications. It discusses why NoSQL databases emerged as alternatives to relational databases, gives an overview of popular NoSQL databases like Redis, MongoDB, Neo4j and their features. It then introduces Spring Data and how it provides common APIs and conventions to work with various NoSQL databases. Specific database APIs for MongoDB, HyperSQL and Neo4j are also covered along with how Spring Data supports cross-store persistence across SQL and NoSQL databases in a single transaction.
Keyvi is a key value index built using finite state machines, making it an immutable key value store. It was developed as a drop-in replacement for Redis to serve as the backend search index for Cliqz, allowing them to reduce data size and machine requirements. Keyvi provides faster performance than Redis through its single-threaded, shared memory model and ability to perform auto-complete matching, approximate matching, and scoring-based matching through techniques like Levenshtein distance.
Growing in the Wild. The story by CUBRID Database Developers.CUBRID
The presentation the CUBRID team presented at Russian Internet Technologies Conference in 2012. The presentation covers such questions as *WHY* CUBRID was developed, *WHY* the developers did not fork existing solutions, *WHY* it was necessary to develop a new RDBMS from scratch, and *HOW* CUBRID Database was evolved over the years.
Conference tutorial: MySQL Cluster as NoSQLSeveralnines
Slides from the 'MySQL Cluster as NoSQL' tutorial at Percona Live MySQL Conference 2012 in London.
Tutorial covers:
*MySQL Cluster administration
* NoSQL options for MySQL Cluster and when to use what
* Memcached (installation and configuration)
* Cluster/J
* NDBAPI
* Benchmarking of different access methods on a live cluster
Mongodb and Totsy - E-commerce Case StudyMitch Pirtle
Deck from MongoChicago, providing a case study on the implementation of the totsy.com website using MongoDB and the Lithium framework.
There's a video you can watch of the same presentation from the Mongo Boston event which happened one month earlier:
http://www.10gen.com/video/mongoboston2010/totsy
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDBAthiq Ahamed
This document provides a summary of a presentation that benchmarked the performance of three popular NoSQL databases: Apache Cassandra, Apache HBase, and MongoDB. It describes the architectures and data models of each database. Benchmark tests were run using the Yahoo Cloud Serving Benchmark and found that Apache Cassandra consistently outperformed the other databases across different workloads in terms of load time, read and write performance, and latency. The presentation emphasizes the importance of benchmarks for evaluating NoSQL database performance and choosing the right database based on application requirements.
RedisConf17 - Using Redis and RediSearch ModuleRedis Labs
This document discusses using Redis and the RediSearch module to store, synchronize, and search volatile data. It covers storing data in Redis, synchronizing data between Redis and other databases, and searching data using secondary indexes and the RediSearch module. Examples demonstrate storing leaderboard data in Redis, synchronizing scores between Redis and a SQL database, and full-text searching teams using RediSearch indexes.
This document discusses NewSQL databases and provides examples of NewSQL products. It begins by explaining the limitations of traditional SQL databases and NoSQL databases in handling big data. It then introduces NewSQL as an approach that provides scalability like NoSQL with ACID transactions and SQL support like traditional databases. Example NewSQL databases discussed in detail include VoltDB, which uses an in-memory architecture, and Google Spanner, which provides a globally distributed SQL database. The document also briefly mentions MySQL Cluster as another NewSQL approach.
MySQL Cluster 7.2 added support for the Memcached API, enabling web services to directly query MySQL Cluster using the Memcached API, and adding a persistent, scalable, fault tolerant backend to Memcached.
The slides take you through the design concepts and introduce a sample social media app built using memcached and MySQL Cluster
This document discusses the limitations of relational databases for modern applications and real-time architectures. It describes how NoSQL databases like Aerospike can provide better performance and scalability. Specific examples are given of how Aerospike has been used to power applications in domains like advertising technology, social media, travel portals, and financial services that require high throughput, low latency access to large datasets.
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
Postgres eliminates the complexity and the pain of creating a single view of the customer. With recent advances, Postgres can support semi-structured, unstructured and structured data in the same environment, employing relational qualities and ACID compliance.
This presentation reviews:
- How advances in Postgres enable it to match capabilities of NoSQL-only niche solutions·
- How the ETL process in Postgres is simple compared to undoing tables and schemas in order to transfer data to a NoSQL-only system
- How Foreign Data Wrappers – essentially pipelines between Postgres and other databases – work and how they help bridge the gap between disparate systems faster than an ETL process
Visit Enterprisedb.com and go to our Resources section, then Webcasts to listen to the presentation recording.
This document summarizes a presentation about using MySQL and the NDB storage engine to build a globally distributed in-memory database system on AWS. It proposes using MySQL/NDB clusters tiled across AWS availability zones to provide high availability and performance at a large scale. Key challenges discussed include managing data consistency across wide geographical distances and dealing with limitations of AWS like network performance and lack of global load balancing. Lessons learned are that NDB can successfully compete with NoSQL for most use cases by providing ACID compliance without sacrificing availability or performance.
The document provides an overview of different NoSQL database types, including key-value stores, document databases, column-oriented databases, graph databases, and caches. It discusses examples of databases for each type and common use cases. The document also covers querying graph databases, polyglot persistence using multiple database types, and concludes with when each database type is best suited and when not to use a NoSQL database.
Developing applications with Cloud Services (Devnexus 2013)Chris Richardson
Cloud computing isn’t just about application deployment. There are also a growing number of cloud-based web services that you can use to develop your application. One of the most well known is Amazon’s Simple Storage Service. But there are many others including web services for messaging, relational and NoSQL databases, email and telephony. Using these services allows you to build highly scalable applications without the pain and cost of having to develop and operate your own infrastructure.
In this presentation, you will learn about the benefits and drawbacks of these Web services; their typical use cases and how to use them. We will describe a location aware, telephony application that is built using cloud services. You will learn about strategies for building resilient, fault tolerant applications that consume cloud services.
Polygot persistence for Java Developers - August 2011 / @OakjugChris Richardson
Relational databases have long been considered the one true way to persist enterprise data. But today, NoSQL databases are emerging as a viable alternative for many applications. They can simplify the persistence of complex data models and offer significantly better scalability, and performance. But NoSQL databases are very different than the ACID/SQL/JDBC/JPA world that we have become accustomed to. In this presentation, you will learn about our experience implementing a use case from POJOs in Action using popular NoSQL databases: Redis, MongoDB, and Cassandra. We will compare and contrast each database’s data model and Java API. You will learn about the benefits and drawbacks of using NoSQL.
Methods of NoSQL database systems benchmarkingТранслируем.бел
Ilya Bakulin presents methods for benchmarking NoSQL database systems. He discusses the Yahoo Cloud Serving Benchmark (YCSB) framework, which allows benchmarking of NoSQL databases using common workloads. YCSB issues simple operations like insert, update, delete and scan without using SQL. It has adapters for popular NoSQL systems and allows custom workloads and databases to be added. Bakulin demonstrates YCSB by benchmarking Cassandra and sharded MySQL under different read/write ratios. Cassandra performs better in a write-heavy workload while MySQL is better for reads.
Polyglot Persistence - Two Great Tastes That Taste Great TogetherJohn Wood
The days of the relational database being a one-stop-shop for all of your persistence needs are over. Although NoSQL databases address some issues that can’t be addressed by relational databases, the opposite is true as well. The relational database offers an unparalleled feature set and rock solid stability. One cannot underestimate the importance of using the right tool for the job, and for some jobs, one tool is not enough. This talk focuses on the strength and weaknesses of both relational and NoSQL databases, the benefits and challenges of polyglot persistence, and examples of polyglot persistence in the wild.
These slides were presented at WindyCityDB 2010.
The document discusses Riak, a decentralized key-value store that is well-suited for web applications, describing how it stores and retrieves data across a distributed cluster of nodes in a way that provides high availability and resolves conflicts. Riak stores data in buckets and keys, replicates data across multiple nodes for availability, uses consistent hashing to determine node ownership of data, and exposes conflicts as sibling objects to be resolved in application logic.
NoSQL overview presentation with details on Riak and CouchDB.
Presented at Qbranch CODE Night 2010-04-15.
Thanks to @frli01 for arranging and @xlson for invitation.
High-Performance Storage Services with HailDB and Javasunnygleason
This document summarizes an approach to providing high-performance storage services using Java and HailDB. It discusses using the optimized "guts" of MySQL without needing to go through JDBC and SQL. It presents HailDB as a storage engine alternative to NoSQL options like Voldemort. It describes integrating HailDB with Java using JNA, building a REST API on top called St8, and examples of nifty applications like graph stores and counters. It concludes with discussing future work like improving packaging, online backup, and exploring JNI bindings.
This document provides an introduction to using Spring Data to simplify development of NoSQL applications. It discusses why NoSQL databases emerged as alternatives to relational databases, gives an overview of popular NoSQL databases like Redis, MongoDB, Neo4j and their features. It then introduces Spring Data and how it provides common APIs and conventions to work with various NoSQL databases. Specific database APIs for MongoDB, HyperSQL and Neo4j are also covered along with how Spring Data supports cross-store persistence across SQL and NoSQL databases in a single transaction.
Keyvi is a key value index built using finite state machines, making it an immutable key value store. It was developed as a drop-in replacement for Redis to serve as the backend search index for Cliqz, allowing them to reduce data size and machine requirements. Keyvi provides faster performance than Redis through its single-threaded, shared memory model and ability to perform auto-complete matching, approximate matching, and scoring-based matching through techniques like Levenshtein distance.
Growing in the Wild. The story by CUBRID Database Developers.CUBRID
The presentation the CUBRID team presented at Russian Internet Technologies Conference in 2012. The presentation covers such questions as *WHY* CUBRID was developed, *WHY* the developers did not fork existing solutions, *WHY* it was necessary to develop a new RDBMS from scratch, and *HOW* CUBRID Database was evolved over the years.
Conference tutorial: MySQL Cluster as NoSQLSeveralnines
Slides from the 'MySQL Cluster as NoSQL' tutorial at Percona Live MySQL Conference 2012 in London.
Tutorial covers:
*MySQL Cluster administration
* NoSQL options for MySQL Cluster and when to use what
* Memcached (installation and configuration)
* Cluster/J
* NDBAPI
* Benchmarking of different access methods on a live cluster
Mongodb and Totsy - E-commerce Case StudyMitch Pirtle
Deck from MongoChicago, providing a case study on the implementation of the totsy.com website using MongoDB and the Lithium framework.
There's a video you can watch of the same presentation from the Mongo Boston event which happened one month earlier:
http://www.10gen.com/video/mongoboston2010/totsy
Benchmarking Top NoSQL Databases: Apache Cassandra, Apache HBase and MongoDBAthiq Ahamed
This document provides a summary of a presentation that benchmarked the performance of three popular NoSQL databases: Apache Cassandra, Apache HBase, and MongoDB. It describes the architectures and data models of each database. Benchmark tests were run using the Yahoo Cloud Serving Benchmark and found that Apache Cassandra consistently outperformed the other databases across different workloads in terms of load time, read and write performance, and latency. The presentation emphasizes the importance of benchmarks for evaluating NoSQL database performance and choosing the right database based on application requirements.
RedisConf17 - Using Redis and RediSearch ModuleRedis Labs
This document discusses using Redis and the RediSearch module to store, synchronize, and search volatile data. It covers storing data in Redis, synchronizing data between Redis and other databases, and searching data using secondary indexes and the RediSearch module. Examples demonstrate storing leaderboard data in Redis, synchronizing scores between Redis and a SQL database, and full-text searching teams using RediSearch indexes.
This document discusses NewSQL databases and provides examples of NewSQL products. It begins by explaining the limitations of traditional SQL databases and NoSQL databases in handling big data. It then introduces NewSQL as an approach that provides scalability like NoSQL with ACID transactions and SQL support like traditional databases. Example NewSQL databases discussed in detail include VoltDB, which uses an in-memory architecture, and Google Spanner, which provides a globally distributed SQL database. The document also briefly mentions MySQL Cluster as another NewSQL approach.
MySQL Cluster 7.2 added support for the Memcached API, enabling web services to directly query MySQL Cluster using the Memcached API, and adding a persistent, scalable, fault tolerant backend to Memcached.
The slides take you through the design concepts and introduce a sample social media app built using memcached and MySQL Cluster
This document discusses the limitations of relational databases for modern applications and real-time architectures. It describes how NoSQL databases like Aerospike can provide better performance and scalability. Specific examples are given of how Aerospike has been used to power applications in domains like advertising technology, social media, travel portals, and financial services that require high throughput, low latency access to large datasets.
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
Postgres eliminates the complexity and the pain of creating a single view of the customer. With recent advances, Postgres can support semi-structured, unstructured and structured data in the same environment, employing relational qualities and ACID compliance.
This presentation reviews:
- How advances in Postgres enable it to match capabilities of NoSQL-only niche solutions·
- How the ETL process in Postgres is simple compared to undoing tables and schemas in order to transfer data to a NoSQL-only system
- How Foreign Data Wrappers – essentially pipelines between Postgres and other databases – work and how they help bridge the gap between disparate systems faster than an ETL process
Visit Enterprisedb.com and go to our Resources section, then Webcasts to listen to the presentation recording.
This document summarizes a presentation about using MySQL and the NDB storage engine to build a globally distributed in-memory database system on AWS. It proposes using MySQL/NDB clusters tiled across AWS availability zones to provide high availability and performance at a large scale. Key challenges discussed include managing data consistency across wide geographical distances and dealing with limitations of AWS like network performance and lack of global load balancing. Lessons learned are that NDB can successfully compete with NoSQL for most use cases by providing ACID compliance without sacrificing availability or performance.
The document provides an overview of different NoSQL database types, including key-value stores, document databases, column-oriented databases, graph databases, and caches. It discusses examples of databases for each type and common use cases. The document also covers querying graph databases, polyglot persistence using multiple database types, and concludes with when each database type is best suited and when not to use a NoSQL database.
Developing applications with Cloud Services (Devnexus 2013)Chris Richardson
Cloud computing isn’t just about application deployment. There are also a growing number of cloud-based web services that you can use to develop your application. One of the most well known is Amazon’s Simple Storage Service. But there are many others including web services for messaging, relational and NoSQL databases, email and telephony. Using these services allows you to build highly scalable applications without the pain and cost of having to develop and operate your own infrastructure.
In this presentation, you will learn about the benefits and drawbacks of these Web services; their typical use cases and how to use them. We will describe a location aware, telephony application that is built using cloud services. You will learn about strategies for building resilient, fault tolerant applications that consume cloud services.
Polygot persistence for Java Developers - August 2011 / @OakjugChris Richardson
Relational databases have long been considered the one true way to persist enterprise data. But today, NoSQL databases are emerging as a viable alternative for many applications. They can simplify the persistence of complex data models and offer significantly better scalability, and performance. But NoSQL databases are very different than the ACID/SQL/JDBC/JPA world that we have become accustomed to. In this presentation, you will learn about our experience implementing a use case from POJOs in Action using popular NoSQL databases: Redis, MongoDB, and Cassandra. We will compare and contrast each database’s data model and Java API. You will learn about the benefits and drawbacks of using NoSQL.
Decomposing applications for deployability and scalability (SpringOne China 2...Chris Richardson
Cloud Foundry helps developers decompose monolithic applications into modular services by:
1) Making it easy to provision platform services like SQL, NoSQL, and message brokers that services can use.
2) Allowing developers to deploy and manage application services independently without having to setup and manage environments themselves.
3) Supporting polyglot applications by enabling different services to be written in different programming languages and frameworks.
NoSQL databases such as Redis, MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offer significantly better scalability and performance. However, using a NoSQL database means giving up the benefits of the relational model such as SQL, constraints and ACID transactions. For some applications, the solution is polyglot persistence: using SQL and NoSQL databases together.
In this talk, you will learn about the benefits and drawbacks of polyglot persistence and how to design applications that use this approach. We will explore the architecture and implementation of an example application that uses MySQL as the system of record and Redis as a very high-performance database that handles queries from the front-end. You will learn about mechanisms for maintaining consistency across the various databases.
Developing applications with Cloud Services #javaone 2012Chris Richardson
Cloud computing isn't just about application deployment. There are also a growing number of cloud-based web services that you can use to develop your application. One of the most well known is Amazon's Simple Storage Service. But there are many others including web services for messaging, relational and NoSQL databases, email and telephony. Using these services allows you to build highly scalable applications without the pain and cost of having to develop and operate your own infrastructure.
In this presentation, you will learn about the benefits and drawbacks of these Web services; their typical use cases and how to use them. We will describe a location aware, telephony application that is built using cloud services. You will learn about strategies for building resilient, fault tolerant applications that consume cloud services.
Decomposing applications for scalability and deployability - svcc sv_code_ca...Chris Richardson
Today, there are several trends that are forcing application architectures to evolve. Users expect a rich, interactive and dynamic user experience on a wide variety of clients including mobile devices. Applications must be highly scalable, highly available and run on cloud environments. Organizations often want to frequently roll out updates, even multiple times a day. Consequently, it’s no longer adequate to develop simple, monolithic web applications that serve up HTML to desktop browsers.
In this talk we describe the limitations of a monolithic architecture. You will learn how to use the scale cube to decompose your application into a set of narrowly focused, independently deployable back-end services and an HTML 5 client. We will also discuss the role of technologies such as NodeJS and AMQP brokers. You will learn how a modern PaaS such as Cloud Foundry simplifies the development and deployment of this style of application.
Decomposing applications for scalability and deployability (devnexus 2013)Chris Richardson
Today, there are several trends that are forcing application architectures to evolve. Users expect a rich, interactive and dynamic user experience on a wide variety of clients including mobile devices. Applications must be highly scalable, highly available and run on cloud environments. Organizations often want to frequently roll out updates, even multiple times a day. Consequently, it’s no longer adequate to develop simple, monolithic web applications that serve up HTML to desktop browsers.
In this talk we describe the limitations of a monolithic architecture. You will learn how to use the scale cube to decompose your application into a set of narrowly focused, independently deployable back-end services and an HTML 5 client. We will also discuss the role of technologies such as NodeJS and AMQP brokers. You will learn how a modern PaaS such as Cloud Foundry simplifies the development and deployment of this style of application.
Improving application design with a rich domain model (springone 2007)Chris Richardson
A classic from 2007. This is a presentationthat I gave at SpringOne in Antwerp, Belgium. It describes show to improve application design by using a rich domain model
This document discusses developing polyglot persistence applications that use both SQL and NoSQL databases. It describes using Redis as a cache to optimize queries by storing denormalized data in Redis materialized views. It also covers how to synchronize data between MySQL and Redis reliably by queuing database events in MySQL and processing them asynchronously to update Redis. This avoids consistency issues but ensures both databases eventually converge.
NodeJS: the good parts? A skeptic’s view (jax jax2013)Chris Richardson
JavaScript used to be confined to the browser. But these days, it's becoming increasingly popular in server-side applications in the form of Node.js. Node.js provides event-driven, non-blocking I/O model that supposedly makes it easy to build scalable network application. In this talk you will learn about the consequences of combining the event-driven programming model with a prototype-based, weakly typed, dynamic language. We will share our perspective as a server-side Java developer who wasn’t entirely happy about JavaScript in the browser, let alone on the server. You will learn how to use Node.js effectively in modern, polyglot applications.
Watch the video: http://www.youtube.com/watch?v=CN0jTnSROsk&feature=youtu.be
Microservices pattern language (microxchg microxchg2016)Chris Richardson
My talk from http://microxchg.io/2016/index.html.
Here is the video - https://www.youtube.com/watch?v=1mcVQhbkA2U
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Chris Richardson
Higher-order functions such as map(), flatmap(), filter() and reduce() have their origins in mathematics and ancient functional programming languages such as Lisp. But today they have entered the mainstream and are available in languages such as JavaScript, Scala and Java 8. They are well on their way to becoming an essential part of every developer’s toolbox.
In this talk you will learn how these and other higher-order functions enable you to write simple, expressive and concise code that solve problems in a diverse set of domains. We will describe how you use them to process collections in Java and Scala. You will learn how functional Futures and Rx (Reactive Extensions) Observables simplify concurrent code. We will even talk about how to write big data applications in a functional style using libraries such as Scalding.
Enterprise applications are complex making it difficult to fit everything in one model. NoSQL is taking a leading role in the next generation database technologies and polyglot persistence a good option to leverage the strength of multiple data stores. This talk will introduce the Spring Data project, an umbrella project that provides a familiar and consistent Spring-based programming model for a wide range of data access technologies such as Redis, MongoDB, HBase, Neo4j...while retaining store-specific features and capabilities.
This document provides an overview of NoSQL databases. It discusses that NoSQL databases are non-relational and were created to overcome limitations of scaling relational databases. The document categorizes NoSQL databases into key-value stores, document databases, graph databases, XML databases, and distributed peer stores. It provides examples like MongoDB, Redis, CouchDB, and Cassandra. The document also explains concepts like CAP theorem, ACID properties, and reasons for using NoSQL databases like horizontal scaling, schema flexibility, and handling large amounts of data.
The document discusses how the database world is changing with the rise of NoSQL databases. It provides an overview of different categories of NoSQL databases like key-value stores, column-oriented databases, document databases, and graph databases. It also discusses how these NoSQL databases are being used with cloud computing platforms and how they are relevant for .NET developers.
Agenda
- What is NOSQL?
- Motivations for NOSQL?
- Brewer’s CAP Theorem
- Taxonomy of NOSQL databases
- Apache Cassandra
- Features
- Data Model
- Consistency
- Operations
- Cluster Membership
- What Does NOSQL means for RDBMS?
A practical introduction to Oracle NoSQL Database - OOW2014Anuj Sahni
Not familiar with Oracle NoSQL Database yet? This great product introduction session discusses the primary functionality included with the product as well as integration with other Oracle products. It includes a live demo that illustrates installation and configuration as well as data modeling and sample NoSQL application development.
Big Data and NoSQL for Database and BI ProsAndrew Brust
This document provides an agenda and overview for a conference session on Big Data and NoSQL for database and BI professionals held from April 10-12 in Chicago, IL. The session will include an overview of big data and NoSQL technologies, then deeper dives into Hadoop, NoSQL databases like HBase, and tools like Hive, Pig, and Sqoop. There will also be demos of technologies like HDInsight, Elastic MapReduce, Impala, and running MapReduce jobs.
An Intro to NoSQL Databases -- NoSQL databases will not become the new dominators. Relational will still be popular, and used in the majority of situations. They, however, will no longer be the automatic choice. (source : http://martinfowler.com/)
SQL? NoSQL? NewSQL?!? What's a Java developer to do? - PhillyETE 2012Chris Richardson
The database world is undergoing a major upheaval. NoSQL databases such as MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offering significantly better scalability and performance. But these databases have a very different and unfamiliar data model and APIs as well as a limited transaction model. Moreover, the relational world is fighting back with so-called NewSQL databases such as VoltDB, which by using a radically different architecture offers high scalability and performance as well as the familiar relational model and ACID transactions. Sounds great but unlike the traditional relational database you can’t use JDBC and must partition your data.
In this presentation you will learn about popular NoSQL databases – MongoDB, and Cassandra – as well at VoltDB. We will compare and contrast each database’s data model and Java API using NoSQL and NewSQL versions of a use case from the book POJOs in Action. We will learn about the benefits and drawbacks of using NoSQL and NewSQL databases.
This document provides an overview of non-relational databases and MongoDB. It discusses the advantages of non-SQL databases like scalability and flexibility compared to RDBMS. It also covers MongoDB features like document-oriented data structure, dynamic queries, indexing, replication and sharding. The document demonstrates basic MongoDB operations in Ruby like connecting to a database, inserting and querying documents.
This document provides an overview of non-relational databases and MongoDB. It discusses the advantages of non-SQL databases like scalability and flexibility compared to RDBMS. It also covers MongoDB features like document-oriented data structure, dynamic queries, indexing, replication and sharding. The document demonstrates basic MongoDB operations in Ruby like connecting to a database, inserting and querying documents.
This document provides an overview of non-relational databases and MongoDB. It discusses the advantages of non-SQL databases like scalability and flexibility compared to RDBMS. It also covers MongoDB features like document-oriented data structures, dynamic queries, indexing, replication and sharding. Examples of MongoDB operations like inserting, finding and querying documents are also shown.
This document provides a gentle, friendly overview of MongoDB. It discusses that MongoDB is a document-oriented, non-relational database that uses JSON-like documents with dynamic schemas. It also covers MongoDB's query language, indexing, data storage and querying, drivers like PyMongo, and how MongoDB provides horizontal scalability through sharding and replication. The document concludes by noting some common use cases for MongoDB and areas it is less suited for.
MongoDB is an open-source, document-oriented database that provides high performance and horizontal scalability. It uses a document-model where data is organized in flexible, JSON-like documents rather than rigidly defined rows and tables. Documents can contain multiple types of nested objects and arrays. MongoDB is best suited for applications that need to store large amounts of unstructured or semi-structured data and benefit from horizontal scalability and high performance.
MongoDB is a document-oriented, high performance, highly available, and horizontally scalable operational database. It addresses challenges with traditional RDBMS like handling high volumes of data, semi-structured and unstructured data types, and the need for agile development. MongoDB can be used for financial services use cases like high volume data feeds, risk analytics, product catalogs, trade capture, reporting, reference data management, portfolio management, quantitative analysis, and automated trading. It provides features like flexible schemas, indexing, aggregation, scaling out through sharding, and integration with Hadoop.
The database world is undergoing a major upheaval. NoSQL databases such as MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offering significantly better scalability and performance. But these databases have a very different and unfamiliar data model and APIs as well as a limited transaction model. Moreover, the relational world is fighting back with so-called NewSQL databases such as VoltDB, which by using a radically different architecture offers high scalability and performance as well as the familiar relational model and ACID transactions. Sounds great but unlike the traditional relational database you can't use JDBC and must partition your data.
In this presentation you will learn about popular NoSQL databases - MongoDB, and Cassandra - as well at VoltDB. We will compare and contrast each database's data model and Java API using NoSQL and NewSQL versions of a use case from the book POJOs in Action. We will learn about the benefits and drawbacks of using NoSQL and NewSQL databases.
The document describes MongoDB as an open-source, high-performance, document-oriented database. It stores data in flexible, JSON-like documents, with schemaless collections. It supports dynamic queries, indexing, aggregation and scaling horizontally. MongoDB is suited for scaling out web applications, caching, and high volume use cases where SQL may not be a good fit.
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, EgyptChris Richardson
This document discusses different database options for developers including SQL, NoSQL, and NewSQL databases. It provides an overview of why developers may choose NoSQL databases like MongoDB or Cassandra over traditional SQL databases, as well as when a NewSQL database could be a better option. The document uses a fictional example of a food delivery application to illustrate how different database choices would work for persisting and querying application data.
This document discusses why MongoDB is easier to develop, operate, and scale compared to relational databases. It provides examples of how MongoDB allows for flexible data models, easy administration through packages and shell helpers, and horizontal scaling by adding servers and sharding data across multiple machines. Resources for getting help from the MongoDB community and commercial support options are also listed.
Webinar: Building Your First Application with MongoDBMongoDB
This document discusses building a location-based check-in app using MongoDB. It begins with an introduction to MongoDB's key features like being document-oriented, open source, high performance, and horizontally scalable. It then demonstrates modeling the app's entities of users, places, and check-ins as MongoDB collections. It shows examples of queries, indexes, and updates used in the app. The document concludes by discussing more advanced features like aggregation and deployment options for MongoDB.
This document compares NoSQL solutions like Redis, Couchbase, MongoDB, and Membase. It discusses their data models, features, and how they differ from relational databases. Key-value, column-oriented, and document-oriented databases are covered. Specific products like Membase, Redis, MongoDB, and CouchDB are also summarized, including their data models, replication methods, and typical uses in applications.
A Survey of Advanced Non-relational Database Systems: Approaches and Applicat...Qian Lin
This document summarizes a survey of advanced non-relational database systems, their approaches, applications, and comparison to relational database management systems (RDBMS). It outlines the problem of scaling to meet new web-scale demands, describes how non-relational databases provide a solution by sacrificing consistency for availability and partition tolerance. Examples of non-relational databases are provided, including their data models, APIs, optimizations, and benefits compared to RDBMS such as improved scalability and fault tolerance.
The document introduces MongoDB as an open source, high performance database that is a popular NoSQL option. It discusses how MongoDB stores data as JSON-like documents, supports dynamic schemas, and scales horizontally across commodity servers. MongoDB is seen as a good alternative to SQL databases for applications dealing with large volumes of diverse data that need to scale.
This document provides an introduction and overview of MongoDB. It discusses MongoDB's features such as being document-based, schema-less, easy to learn and use, and having replication and sharding capabilities. It also covers installing and configuring MongoDB, basic CRUD operations, querying, indexing, and common use cases. Tools for managing and working with MongoDB like MongoHub and a demo code repository are also referenced.
A common microservice architecture anti-pattern is more the merrier. It occurs when an organization team builds an excessively fine-grained architecture, e.g. one service-per-developer. In this talk, you will learn about the criteria that you should consider when deciding service granularity. I'll discuss the downsides of a fine-grained microservice architecture. You will learn how sometimes the solution to a design problem is simply a JAR file.
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...Chris Richardson
This is a talk I gave at YOW! London 2022.
Let's imagine that you are responsible for an aging monolithic application that's critical to your business. Sadly, getting changes into production is a painful ordeal that regularly causes outages. And to make matters worse, the application's technology stack is growing increasingly obsolete. Neither the business nor the developers are happy. You need to modernize your application and have read about the benefits of microservices. But is the microservice architecture a good choice for your application?
In this presentation, I describe the dark energy and dark matter forces (a.k.a. concerns) that you must consider when deciding between the monolithic and microservice architectural styles. You will learn about how well each architectural style resolves each of these forces. I describe how to evaluate the relative importance of each of these forces to your application. You will learn how to use the results of this evaluation to decide whether to migrate to the microservice architecture.
Dark Energy, Dark Matter and the Microservices Patterns?!Chris Richardson
Dark matter and dark energy are mysterious concepts from astrophysics that are used to explain observations of distant stars and galaxies. The Microservices pattern language - a collection of patterns that solve architecture, design, development, and operational problems — enables software developers to use the microservice architecture effectively. But how could there possibly be a connection between microservices and these esoteric concepts from astrophysics?
In this presentation, I describe how dark energy and dark matter are excellent metaphors for the competing forces (a.k.a. concerns) that must be resolved by the microservices pattern language. You will learn that dark energy, which is an anti-gravity, is a metaphor for the repulsive forces that encourage decomposition into services. I describe how dark matter, which is an invisible matter that has a gravitational effect, is a metaphor for the attractive forces that resist decomposition and encourage the use of a monolithic architecture. You will learn how to use the dark energy and dark matter forces as guide when designing services and operations.
Dark energy, dark matter and microservice architecture collaboration patternsChris Richardson
Dark energy and dark matter are useful metaphors for the repulsive forces, which encourage decomposition into services, and the attractive forces, which resist decomposition. You must balance these conflicting forces when defining a microservice architecture including when designing system operations (a.k.a. requests) that span services.
In this talk, I describe the dark energy and dark matter forces. You will learn how to design system operations that span services using microservice architecture collaboration patterns: Saga, Command-side replica, API composition, and CQRS patterns. I describe how each of these patterns resolve the dark energy and dark matter forces differently.
It sounds dull but good architecture documentation is essential. Especially when you are actively trying to improve your architecture.
For example, I spend a lot time helping clients modernize their software architecture. More often than I like, I’m presented with a vague and lifeless collection of boxes and lines. As a result, it’s sometimes difficult to discuss the architecture in a meaningful and productive way. In this presentation, I’ll describe techniques for creating minimal yet effective documentation for your application’s microservice architecture. In particular, you will learn how documenting scenarios can bring your architecture to life.
Using patterns and pattern languages to make better architectural decisions Chris Richardson
This is a presentation that gave at the O'Reilly Software Architecture Superstream: Software Architecture Patterns.
The talk's focus is the microservices pattern language.
However, it also shows how thinking with the pattern mindset - context/problem/forces/solution/consequences - leads to better technically decisions.
The microservices architecture offers tremendous benefits, but it’s not a silver bullet. It also has some significant drawbacks. The microservices pattern language—a collection of patterns that solve architecture, design, development, and operational problems—enables software developers to apply the microservices architecture effectively. I provide an overview of the microservices architecture and examines the motivations for the pattern language, then takes you through the key patterns in the pattern language.
Rapid, reliable, frequent and sustainable software development requires an architecture that is loosely coupled and modular.
Teams need to be able complete their work with minimal coordination and communication with other teams.
They also need to be able keep the software’s technology stack up to date.
However, the microservice architecture isn’t always the only way to satisfy these requirements.
Yet, neither is the monolithic architecture.
In this talk, I describe loose coupling and modularity and why they are is essential.
You will learn about three architectural patterns: traditional monolith, modular monolith and microservices.
I describe the benefits, drawbacks and issues of each pattern and how well it supports rapid, reliable, frequent and sustainable development.
You will learn some heuristics for selecting the appropriate pattern for your application.
Events to the rescue: solving distributed data problems in a microservice arc...Chris Richardson
To deliver a large complex application rapidly, frequently and reliably, you often must use the microservice architecture.
The microservice architecture is an architectural style that structures the application as a collection of loosely coupled services.
One challenge with using microservices is that in order to be loosely coupled each service has its own private database.
As a result, implementing transactions and queries that span services is no longer straightforward.
In this presentation, you will learn how event-driven microservices address this challenge.
I describe how to use sagas, which is an asynchronous messaging-based pattern, to implement transactions that span services.
You will learn how to implement queries that span services using the CQRS pattern, which maintain easily queryable replicas using events.
A pattern language for microservices - June 2021 Chris Richardson
The microservice architecture is growing in popularity. It is an architectural style that structures an application as a set of loosely coupled services that are organized around business capabilities. Its goal is to enable the continuous delivery of large, complex applications. However, the microservice architecture is not a silver bullet and it has some significant drawbacks.
The goal of the microservices pattern language is to enable software developers to apply the microservice architecture effectively. It is a collection of patterns that solve architecture, design, development and operational problems. In this talk, I’ll provide an overview of the microservice architecture and describe the motivations for the pattern language. You will learn about the key patterns in the pattern language.
QConPlus 2021: Minimizing Design Time Coupling in a Microservice ArchitectureChris Richardson
Delivering large, complex software rapidly, frequently and reliably requires a loosely coupled organization. DevOps teams should rarely need to communicate and coordinate in order to get work done. Conway's law states that an organization and the architecture that it develops mirror one another. Hence, a loosely coupled organization requires a loosely coupled architecture.
In this presentation, you will learn about design-time coupling in a microservice architecture and why it's essential to minimize it. I describe how to design service APIs to reduce coupling. You will learn how to minimize design-time coupling by applying a version of the DRY principle. I describe how key microservices patterns potentially result in tight design time coupling and how to avoid it.
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...Chris Richardson
In order to explain certain astronomical observations, physicists created the mysterious concepts of dark energy and dark matter.
Dark energy is a repulsive force.
It’s an anti-gravity that is forcing matter apart and accelerating the expansion of the universe.
Dark matter has the opposite attraction effect.
Although it’s invisible, dark matter has a gravitational effect on stars and galaxies.
In this presentation, you will learn how these metaphors apply to the microservice architecture.
I describe how there are multiple repulsive forces that drive the decomposition of your application into services.
You will learn, however, that there are also multiple attractive forces that resist decomposition and bind software elements together.
I describe how as an architect you must find a way to balance these opposing forces.
Skillsmatter CloudNative eXchange 2020
The microservice architecture is a key part of cloud native.
An essential principle of the microservice architecture is loose coupling.
If you ignore this principle and develop tightly coupled services the result will mostly likely be yet another "microservices failure story”.
Your application will be brittle and have all of disadvantages of both the monolithic and microservice architectures.
In this talk you will learn about the different kinds of coupling and how to design loosely coupled microservices.
I describe how to minimize design time and increase the productivity of your DevOps teams.
You will learn how how to reduce runtime coupling and improve availability.
I describe how to improve availability by minimizing the coupling caused by your infrastructure.
DDD SoCal: Decompose your monolith: Ten principles for refactoring a monolith...Chris Richardson
This is a talk I gave at DDD SoCal.
1. Make the most of your monolith
2. Adopt microservices for the right reasons
3. It’s not just architecture
4. Get the support of the business
5. Migrate incrementally
6. Know your starting point
7. Begin with the end in mind
8. Migrate high-value modules first
9. Success is improved velocity and reliability
10. If it hurts, don’t do it
Decompose your monolith: Six principles for refactoring a monolith to microse...Chris Richardson
This was a talk I gave at the CTO virtual summit on July 28th. It describes 6 principles for refactoring to a microservice architecture.
1. Make the most of your monolith
2. Adopt microservices for the right reasons
3. Migrate incrementally
4. Begin with the end in mind
5. Migrate high-value modules first
6. Success is improved velocity and reliability
The microservice architecture is becoming increasingly important. But what is it exactly? Why should you care about microservices? And, what do you need to do to ensure that your organization uses the microservice architecture successfully? In this talk, I’ll answer these and other questions. You will learn about the motivations for the microservice architecture and why simply adopting microservices is insufficient. I describe essential characteristics of microservices, You will learn how a successful microservice architecture consists of loosely coupled services with stable APIs that communicate asynchronously.
Eventuate is a platform that tackles the distributed data management challenges inherent in a microservice architecture.
https://eventuate.io/
This document discusses strategies for migrating a monolithic application to microservices. It begins with an overview of decomposing a monolith and implementing new features as microservices. It then provides an example of extracting the delivery module from a monolithic food delivery application into its own delivery microservice. The example outlines the steps of splitting the code, extracting the relevant database tables, defining and deploying the new delivery service, integrating it with the monolith, and removing the old code. Finally, it discusses implementing a delayed delivery service as another example.
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Nikki Chapple
Session | Protecting Your Sensitive Data with Microsoft Purview: Practical Information Protection and DLP Strategies
Presenter | Nikki Chapple (MVP| Principal Cloud Architect CloudWay) & Ryan John Murphy (Microsoft)
Event | IRMS Conference 2025
Format | Birmingham UK
Date | 18-20 May 2025
In this closing keynote session from the IRMS Conference 2025, Nikki Chapple and Ryan John Murphy deliver a compelling and practical guide to data protection, compliance, and information governance using Microsoft Purview. As organizations generate over 2 billion pieces of content daily in Microsoft 365, the need for robust data classification, sensitivity labeling, and Data Loss Prevention (DLP) has never been more urgent.
This session addresses the growing challenge of managing unstructured data, with 73% of sensitive content remaining undiscovered and unclassified. Using a mountaineering metaphor, the speakers introduce the “Secure by Default” blueprint—a four-phase maturity model designed to help organizations scale their data security journey with confidence, clarity, and control.
🔐 Key Topics and Microsoft 365 Security Features Covered:
Microsoft Purview Information Protection and DLP
Sensitivity labels, auto-labeling, and adaptive protection
Data discovery, classification, and content labeling
DLP for both labeled and unlabeled content
SharePoint Advanced Management for workspace governance
Microsoft 365 compliance center best practices
Real-world case study: reducing 42 sensitivity labels to 4 parent labels
Empowering users through training, change management, and adoption strategies
🧭 The Secure by Default Path – Microsoft Purview Maturity Model:
Foundational – Apply default sensitivity labels at content creation; train users to manage exceptions; implement DLP for labeled content.
Managed – Focus on crown jewel data; use client-side auto-labeling; apply DLP to unlabeled content; enable adaptive protection.
Optimized – Auto-label historical content; simulate and test policies; use advanced classifiers to identify sensitive data at scale.
Strategic – Conduct operational reviews; identify new labeling scenarios; implement workspace governance using SharePoint Advanced Management.
🎒 Top Takeaways for Information Management Professionals:
Start secure. Stay protected. Expand with purpose.
Simplify your sensitivity label taxonomy for better adoption.
Train your users—they are your first line of defense.
Don’t wait for perfection—start small and iterate fast.
Align your data protection strategy with business goals and regulatory requirements.
💡 Who Should Watch This Presentation?
This session is ideal for compliance officers, IT administrators, records managers, data protection officers (DPOs), security architects, and Microsoft 365 governance leads. Whether you're in the public sector, financial services, healthcare, or education.
🔗 Read the blog: https://nikkichapple.com/irms-conference-2025/
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Lorenzo Miniero
Slides for my "Multistream support in the Janus SIP and NoSIP plugins" presentation at the OpenSIPS Summit 2025 event.
They describe my efforts refactoring the Janus SIP and NoSIP plugins to allow for the gatewaying of an arbitrary number of audio/video streams per call (thus breaking the current 1-audio/1-video limitation), plus some additional considerations on what this could mean when dealing with application protocols negotiated via SIP as well.
Offshore IT Support: Balancing In-House and Offshore Help Desk Techniciansjohn823664
In today's always-on digital environment, businesses must deliver seamless IT support across time zones, devices, and departments. This SlideShare explores how companies can strategically combine in-house expertise with offshore talent to build a high-performing, cost-efficient help desk operation.
From the benefits and challenges of offshore support to practical models for integrating global teams, this presentation offers insights, real-world examples, and key metrics for success. Whether you're scaling a startup or optimizing enterprise support, discover how to balance cost, quality, and responsiveness with a hybrid IT support strategy.
Perfect for IT managers, operations leads, and business owners considering global help desk solutions.
European Accessibility Act & Integrated Accessibility TestingJulia Undeutsch
Emma Dawson will guide you through two important topics in this session.
Firstly, she will prepare you for the European Accessibility Act (EAA), which comes into effect on 28 June 2025, and show you how development teams can prepare for it.
In the second part of the webinar, Emma Dawson will explore with you various integrated testing methods and tools that will help you improve accessibility during the development cycle, such as Linters, Storybook, Playwright, just to name a few.
Focus: European Accessibility Act, Integrated Testing tools and methods (e.g. Linters, Storybook, Playwright)
Target audience: Everyone, Developers, Testers
Microsoft Build 2025 takeaways in one presentationDigitalmara
Microsoft Build 2025 introduced significant updates. Everything revolves around AI. DigitalMara analyzed these announcements:
• AI enhancements for Windows 11
By embedding AI capabilities directly into the OS, Microsoft is lowering the barrier for users to benefit from intelligent automation without requiring third-party tools. It's a practical step toward improving user experience, such as streamlining workflows and enhancing productivity. However, attention should be paid to data privacy, user control, and transparency of AI behavior. The implementation policy should be clear and ethical.
• GitHub Copilot coding agent
The introduction of coding agents is a meaningful step in everyday AI assistance. However, it still brings challenges. Some people compare agents with junior developers. They noted that while the agent can handle certain tasks, it often requires supervision and can introduce new issues. This innovation holds both potential and limitations. Balancing automation with human oversight is crucial to ensure quality and reliability.
• Introduction of Natural Language Web
NLWeb is a significant step toward a more natural and intuitive web experience. It can help users access content more easily and reduce reliance on traditional navigation. The open-source foundation provides developers with the flexibility to implement AI-driven interactions without rebuilding their existing platforms. NLWeb is a promising level of web interaction that complements, rather than replaces, well-designed UI.
• Introduction of Model Context Protocol
MCP provides a standardized method for connecting AI models with diverse tools and data sources. This approach simplifies the development of AI-driven applications, enhancing efficiency and scalability. Its open-source nature encourages broader adoption and collaboration within the developer community. Nevertheless, MCP can face challenges in compatibility across vendors and security in context sharing. Clear guidelines are crucial.
• Windows Subsystem for Linux is open-sourced
It's a positive step toward greater transparency and collaboration in the developer ecosystem. The community can now contribute to its evolution, helping identify issues and expand functionality faster. However, open-source software in a core system also introduces concerns around security, code quality management, and long-term maintenance. Microsoft’s continued involvement will be key to ensuring WSL remains stable and secure.
• Azure AI Foundry platform hosts Grok 3 AI models
Adding new models is a valuable expansion of AI development resources available at Azure. This provides developers with more flexibility in choosing language models that suit a range of application sizes and needs. Hosting on Azure makes access and integration easier when using Microsoft infrastructure.
6th Power Grid Model Meetup
Join the Power Grid Model community for an exciting day of sharing experiences, learning from each other, planning, and collaborating.
This hybrid in-person/online event will include a full day agenda, with the opportunity to socialize afterwards for in-person attendees.
If you have a hackathon proposal, tell us when you register!
About Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
Supercharge Your AI Development with Local LLMsFrancesco Corti
In today's AI development landscape, developers face significant challenges when building applications that leverage powerful large language models (LLMs) through SaaS platforms like ChatGPT, Gemini, and others. While these services offer impressive capabilities, they come with substantial costs that can quickly escalate especially during the development lifecycle. Additionally, the inherent latency of web-based APIs creates frustrating bottlenecks during the critical testing and iteration phases of development, slowing down innovation and frustrating developers.
This talk will introduce the transformative approach of integrating local LLMs directly into their development environments. By bringing these models closer to where the code lives, developers can dramatically accelerate development lifecycles while maintaining complete control over model selection and configuration. This methodology effectively reduces costs to zero by eliminating dependency on pay-per-use SaaS services, while opening new possibilities for comprehensive integration testing, rapid prototyping, and specialized use cases.
Jira Administration Training – Day 1 : IntroductionRavi Teja
This presentation covers the basics of Jira for beginners. Learn how Jira works, its key features, project types, issue types, and user roles. Perfect for anyone new to Jira or preparing for Jira Admin roles.
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....Jasper Oosterveld
Sensitivity labels, powered by Microsoft Purview Information Protection, serve as the foundation for classifying and protecting your sensitive data within Microsoft 365. Their importance extends beyond classification and play a crucial role in enforcing governance policies across your Microsoft 365 environment. Join me, a Data Security Consultant and Microsoft MVP, as I share practical tips and tricks to get the full potential of sensitivity labels. I discuss sensitive information types, automatic labeling, and seamless integration with Data Loss Prevention, Teams Premium, and Microsoft 365 Copilot.
Maxx nft market place new generation nft marketing placeusersalmanrazdelhi
PREFACE OF MAXXNFT
MaxxNFT: Powering the Future of Digital Ownership
MaxxNFT is a cutting-edge Web3 platform designed to revolutionize how
digital assets are owned, traded, and valued. Positioned at the forefront of the
NFT movement, MaxxNFT views NFTs not just as collectibles, but as the next
generation of internet equity—unique, verifiable digital assets that unlock new
possibilities for creators, investors, and everyday users alike.
Through strategic integrations with OKT Chain and OKX Web3, MaxxNFT
enables seamless cross-chain NFT trading, improved liquidity, and enhanced
user accessibility. These collaborations make it easier than ever to participate
in the NFT ecosystem while expanding the platform’s global reach.
With a focus on innovation, user rewards, and inclusive financial growth,
MaxxNFT offers multiple income streams—from referral bonuses to liquidity
incentives—creating a vibrant community-driven economy. Whether you
'
re
minting your first NFT or building a digital asset portfolio, MaxxNFT empowers
you to participate in the future of decentralized value exchange.
https://maxxnft.xyz/
Improving Developer Productivity With DORA, SPACE, and DevExJustin Reock
Ready to measure and improve developer productivity in your organization?
Join Justin Reock, Deputy CTO at DX, for an interactive session where you'll learn actionable strategies to measure and increase engineering performance.
Leave this session equipped with a comprehensive understanding of developer productivity and a roadmap to create a high-performing engineering team in your company.
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPathCommunity
Join the UiPath Community Berlin (Virtual) meetup on May 27 to discover handy Studio Tips & Tricks and get introduced to UiPath Insights. Learn how to boost your development workflow, improve efficiency, and gain visibility into your automation performance.
📕 Agenda:
- Welcome & Introductions
- UiPath Studio Tips & Tricks for Efficient Development
- Best Practices for Workflow Design
- Introduction to UiPath Insights
- Creating Dashboards & Tracking KPIs (Demo)
- Q&A and Open Discussion
Perfect for developers, analysts, and automation enthusiasts!
This session streamed live on May 27, 18:00 CET.
Check out all our upcoming UiPath Community sessions at:
👉 https://community.uipath.com/events/
Join our UiPath Community Berlin chapter:
👉 https://community.uipath.com/berlin/
Adtran’s SDG 9000 Series brings high-performance, cloud-managed Wi-Fi 7 to homes, businesses and public spaces. Built on a unified SmartOS platform, the portfolio includes outdoor access points, ceiling-mount APs and a 10G PoE router. Intellifi and Mosaic One simplify deployment, deliver AI-driven insights and unlock powerful new revenue streams for service providers.
New Ways to Reduce Database Costs with ScyllaDBScyllaDB
How ScyllaDB’s latest capabilities can reduce your infrastructure costs
ScyllaDB has been obsessed with price-performance from day 1. Our core database is architected with low-level engineering optimizations that squeeze every ounce of power from the underlying infrastructure. And we just completed a multi-year effort to introduce a set of new capabilities for additional savings.
Join this webinar to learn about these new capabilities: the underlying challenges we wanted to address, the workloads that will benefit most from each, and how to get started. We’ll cover ways to:
- Avoid overprovisioning with “just-in-time” scaling
- Safely operate at up to ~90% storage utilization
- Cut network costs with new compression strategies and file-based streaming
We’ll also highlight a “hidden gem” capability that lets you safely balance multiple workloads in a single cluster. To conclude, we will share the efficiency-focused capabilities on our short-term and long-term roadmaps.
Introduction and Background:
Study Overview and Methodology: The study analyzes the IT market in Israel, covering over 160 markets and 760 companies/products/services. It includes vendor rankings, IT budgets, and trends from 2025-2029. Vendors participate in detailed briefings and surveys.
Vendor Listings: The presentation lists numerous vendors across various pages, detailing their names and services. These vendors are ranked based on their participation and market presence.
Market Insights and Trends: Key insights include IT market forecasts, economic factors affecting IT budgets, and the impact of AI on enterprise IT. The study highlights the importance of AI integration and the concept of creative destruction.
Agentic AI and Future Predictions: Agentic AI is expected to transform human-agent collaboration, with AI systems understanding context and orchestrating complex processes. Future predictions include AI's role in shopping and enterprise IT.
nnual (33 years) study of the Israeli Enterprise / public IT market. Covering sections on Israeli Economy, IT trends 2026-28, several surveys (AI, CDOs, OCIO, CTO, staffing cyber, operations and infra) plus rankings of 760 vendors on 160 markets (market sizes and trends) and comparison of products according to support and market penetration.
Using Spring with NoSQL databases (SpringOne China 2012)
1. Using Spring with NoSQL databases
Chris Richardson,
Author of POJOs in Action, Founder of the original CloudFoundry.com
@crichardson [email protected] http://plainoldobjects.com/
2. Presentation goal
NoSQL databases: what, why and
how
How Spring Data simplifies the
development of NoSQL applications
8. vmc push About-Chris
Developer Advocate
Signup at http://cloudfoundry.com
9. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
10. Relational databases are great...
• SQL • Well supported
• High-level • JDBC
• Sorting • Hibernate/JPA
• Aggregation • Spring
• ACID semantics • Well understood
• Developers
• Operators
11. ... but they have limitations
• Object/relational impedance mismatch
• Complicated to map rich domain model to relational schema
• Difficult to handle semi-structured data, e.g. varying attributes
• Schema changes
• Extremely difficult/impossible to scale
• Poor performance for some use cases
12. Solution: Spend Money
OR
http://upload.wikimedia.org/wikipedia/commons/e/e5/Rising_Sun_Yacht.JPG
• Hire more DevOps
• Use application-level sharding
• Build your own middleware
• …
http://www.trekbikes.com/us/en/bikes/road/race_performance/madone_5_series/madone_5_2/#
16. Solution: Use NewSQL
• Relational databases with SQL and ACID transactions
AND
• New and improved architecture - designed for modern hardware
• Radically better scalability and performance
• NewSQL vendors: Gemfire/SQLFire, VoltDB, ...
17. Future = multi-paradigm data storage for
enterprise applications
IEEE Software Sept/October 2010 - Debasish Ghosh / Twitter @debasishg
18. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
19. Redis
• Advanced key-value store K1 V1
• Written in C
K2 V2
• Very fast, e.g. 100K reqs/sec
• Optional persistence ... ...
• Transactions with optimistic locking
• Master-slave replication
• Sharding using client-side consistent hashing
20. Using Redis (via CLI)
Datatypes: redis 127.0.0.1:6379> set foo 1
OK
•Strings redis 127.0.0.1:6379> get foo
•Hashes "1"
•Maps redis 127.0.0.1:6379> sadd myset a
•Lists (integer) 1
•Sets redis 127.0.0.1:6379> sadd myset b
(integer) 1
•Sorted sets redis 127.0.0.1:6379> smembers myset
1) "a"
2) "b"
redis 127.0.0.1:6379> srem myset a
(integer) 1
redis 127.0.0.1:6379> smembers myset
1) "b"
21. Redis use cases
• Replacement for Memcached • Handling tasks that overload an RDBMS
• Session state • Hit counts - INCR
• Cache of data retrieved from system of • Most recent N items - LPUSH and LTRIM
record (SOR)
• Randomly selecting an item –
• Replica of SOR for queries needing high- SRANDMEMBER
performance
• Queuing – Lists with LPOP, RPUSH, ….
• High score tables – Sorted sets and ZINCRBY
• …
22. MongoDB
• Document-oriented database • Geospatial queries
• JSON-style documents: objects, lists, • Grid FS provides file storage
primitives
• Very fast, asynchronous writes
• Schema-less
• Highly scalable and available
• Transaction = update of a single
document
• Rich query language for dynamic queries
23. Data model = Binary JSON documents
Server
Database: Food To Go
Collection: Restaurants
{
"name" : "TGI Fridays",
"type" : ”American",
"serviceArea" : [
"94619",
"94618"
], Sequence of
"openingHours" : [ bytes on disk
{ è fast i/o
"dayOfWeek" : "Wednesday",
"open" : 1730,
"close" : 2230
}
],
"_id" : ObjectId("4bddc2f49d1505567c6220a0")
}
25. MongoDB query by example
{
serviceArea:"94619",
Find a restaurant that
openingHours: { serves the 94619 zip
$elemMatch : { code and is open at 6pm
"dayOfWeek" : "Monday",
"open": {$lte: 1800}, on a Monday
"close": {$gte: 1800}
}
}
}
DBCursor cursor = collection.find(qbeObject);
while (cursor.hasNext()) {
DBObject o = cursor.next();
…
}
27. MongoDB use cases
• Use cases • Who is using it?
• High volume writes • Shutterfly, Foursquare
• Complex data • Bit.ly Intuit
• Semi-structured data • SourceForge, NY Times
• GILT Groupe, Evite,
• SugarCRM
28. Other NoSQL databases
Type Examples
Extensible columns/Column-oriented Hbase
e
SimpleDB, DynamoDB
r it
avo
Cassandra
r f
you
Graph Neo4j
t
t ou
Key-value
I lef Voldemort, Riak
if
Document So rry CouchDb
http://nosql-database.org/ lists 122+ NoSQL databases
29. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
30. Spring Data is here to help
For
NoSQL databases
http://www.springsource.org/spring-data
31. Spring Data sub-projects
• Relational • QueryDSL
• JPA • Big Data
• JDBC Extensions • Hadoop
• NoSQL • HDFS and M/R
• Redis • Hive
• Mongo • Pig
• HBase • Cascading
• Neo4j • Splunk
• Gemfire • Access
• Lucene • REST
32. What you get
• Template classes that hide the boilerplate code
• Auto-generated (generic) repositories for some NOSQL databases
• Java NoSQL mapping
• Cross Store Persistence
• Support in Roo
34. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
35. Redis challenges
• Connection management: need to get and reliably close connections
• Data mapping: application objects Redis binary/strings
• Multiple client libraries with gratuitously different APIs
36. Spring Data for Redis
• Low-level - RedisConnection(Factory) • Connection management
• Supports Jedis, Jredis, Rjc and Srp • Pluggable Java binary conversion
• Insulates client code from underlying • Support classes:
library
• Collections-backed by RedisTemplate
• High-level - RedisTemplate
• Atomic Counters
• Builds on RedisConnection(Factory)
• Support for Redis pub/sub
38. Using RedisConnectionFactory
public class LowLevelRedisTest {
@Autowired private RedisConnectionFactory redisConnectionFactory;
@Test
public void testLowLevel() { Library independent code J
RedisConnection con = null;
try {
con = redisConnectionFactory.getConnection();
byte[] key = "foo".getBytes(); Ugly byte arrays L
byte[] value = "bar".getBytes();
con.set(key, value);
byte[] retrievedValue = con.get(key);
Assert.assertArrayEquals(value, retrievedValue);
} finally {
if (con != null) { con.close(); }
Need to clean up L
}
}
39. Configuring RedisConnectionFactory
@Configuration
public class RedisConfiguration {
@Value("${databaseHostName}")
protected String databaseHostName;
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(databaseHostName);
factory.setPort(6379);
factory.setUsePool(true);
return factory;
}
}
40. High-level API = RedisTemplate
• Builds on RedisConnection(Factory) • Maps Redis exceptions
DataAccessException
• Analogous to JdbcTemplate
• StringRedisTemplate
• Parameterized type
• Extends RedisTemplate<String,
• K - Key type
String>
• V – Value type
• Keys and values are Strings
• Handles Java Key/Value Redis byte[]
41. Using StringRedisTemplate
public class RedisTemplateTest {
@Autowired private StringRedisTemplate stringRedisTemplate; Returns KV type specific interface
@Test
public void testGetAndSet() {
stringRedisTemplate.opsForValue().set("foo", "bar");
assertEquals("bar", stringRedisTemplate.opsForValue().get("foo"));
}
@Test Converts between Strings and byte[]
public void testHashOps() {
stringRedisTemplate.opsForHash().put("myHash", "myKey", "value");
assertEquals("value",
stringRedisTemplate.opsForHash().get("myHash", "myKey"));
assertEquals(Collections.singleton("myKey"),
stringRedisTemplate.opsForHash().keys("myHash"));
assertEquals(Collections.singletonMap("myKey", "value"),
stringRedisTemplate.opsForHash().entries("myHash"));
}
42. Configuring StringRedisTemplate
@Configuration
public class RedisConfiguration {
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
…
}
@Bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(factory);
return template;
}
}
43. RedisTemplate: Java objects binary data
• DefaultSerializer - defaults to JdkSerializationRedisSerializer
• KeySerializer
• ValueSerializer
• HashKeySerializer
• HashValueSerializer
50. Redis caching support
KVs = <prefix + K, V>
Template needs to (de)serialize K and V Sorted set of all keys for clear()
51. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
52. MongoDB API usage patterns
• Create and store Mongo singleton • Queries
• Externalized server host, port etc. • Construct query object
• Inserts/Updates • mongo.getDatabase(…).getCollection(…)
• Map application POJO DBObject • Iterate through Cursor
• Map DBObject application POJO
• mongo.getDatabase(…).getCollection(…)
• Partial document updates
• Configure asynchronous vs. synchronous writes Higher-level than JDBC but still
repetitive, …
53. Spring Data - MongoDB
• MongoTemplate • Map-Reduce integration
• Query, Criteria, and Update DSLs • GridFS support
• Generic repositories
• Querydsl integration
• Cross-store persistence
• GeoSpatial integration
60. Update example
@Repository
public class RestaurantRepository {
public void addMenuItem(String restaurantId,
MenuItem newMenuItem) {
mongoTemplate.updateFirst(
query(where("_id").is(new ObjectId(restaurantId))),
new Update().push("menuItems", newMenuItem),
Restaurant.class);
}
Atomic, in-place update of document
61. Geospatial example 1
case class FriendRecord(id : String,
name : String,
@Component
location : Point)
class MongoFriendService extends FriendService {
@Autowired
var mongoTemplate: MongoTemplate = _
Collection name
@PostConstruct
def createGeoIndex {
val dbo = new BasicDBObject
dbo.put("location", "2d")
mongoTemplate.getCollection("friendRecord").ensureIndex(dbo)
}
Create geospatial 2d index
62. Geospatial example 2 - finding nearby
@Component
class MongoFriendService extends FriendService {
override def findNearbyFriends(request: NearbyFriendsRequest) = {
val location = new Point(request.longitude, request.latitude)
val distance = new Distance(3, Metrics.MILES)
val query = NearQuery.near(location).maxDistance(distance)
val result = mongoTemplate.geoNear(query, classOf[FriendRecord])
val nearby = result.getContent.map(_.getContent)
FindNearbyFriendsResponse(nearby.map(f => FriendInfo(f.name, f.id)))
}
63. Callbacks – access driver API with exception
translation Exceptions are
translated
@Test
public void testDbCallback() {
Restaurant ajanta = makeAjantaRestaurant();
restaurantRepository.add(ajanta);
assertCollectionExists("restaurants2");
}
private Void assertCollectionExists(final String collectionName) {
return mongoTemplate.execute(new DbCallback<Void>(){
@Override
public Void doInDB(DB db) {
Set<String> collectionNames = db.getCollectionNames();
Assert.assertTrue("Missing from " +
collectionNames,
collectionNames.contains(collectionName));
return null;
}});
}
64. Defining a Mongo Generic Repository
public class Person {
private ObjectId id;
private String firstname;
private String lastname;
… getters and setters
}
interface PersonRepository extends MongoRepository<Person, ObjectId> {
List<Person> findByLastname(String lastName);
}
Person p = new Person("John", "Doe");
personRepository.save(p);
Person p2 = personRepository.findOne(p.getId());
List<Person> johnDoes = personRepository.findByLastname("Doe");
assertEquals(1, johnDoes.size());
65. Mongo Repository configuration
<bean>
<mongo:repositories
base-package="net.chrisrichardson.mongodb.example.mongorepository"
mongo-template-ref="mongoTemplate" />
</beans>
Scans classpath looking for subtypes of MongoRepository in the base package
66. Richer mapping
@Document(collection=”people”) Annotations define mapping: @Document, @Id, @Indexed,
public class Person { @PersistanceConstructor, @CompoundIndex, @DBRef,
@GeoSpatialIndexed, @Value
@Id
private ObjectId id; Map fields instead of properties no getters or setters
private String firstname;
required
@Indexed
private String lastname; Non-default constructor
Index generation
@PersistenceConstructor
public Person(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
….
}
67. Richer mapping configuration
@Configuration
public class MongoExampleConfig extends AbstractMongoConfiguration {
private @Value("#{mongoDbProperties.databaseName}")
String mongoDbDatabase;
private @Value("#{mongoDbProperties.host}")
String mongoDbHost; Defines MongoTemplate bean
@Override
public Mongo mongo() throws Exception {
return new Mongo(mongoDbHost);
}
@Override Configures classpath scanning
public String getDatabaseName() {
return mongoDbDatabase;
}
@Override
public String getMappingBasePackage() {
return Person.class.getPackage().getName();
}
}
68. Support for the QueryDSL project
Generated from Type-safe
domain model class composable queries
QPerson person = QPerson.person;
Predicate predicate =
person.homeAddress.street1.eq("1 High Street")
.and(person.firstname.eq("John"))
List<Person> people = personRepository.findAll(predicate);
assertEquals(1, people.size());
assertPersonEquals(p, people.get(0));
69. Cross-store/polyglot persistence
Person person = new Person(…);
@Entity entityManager.persist(person);
public class Person {
// In Database Person p2 = entityManager.find(…)
@Id private Long id;
private String firstname;
private String lastname;
// In MongoDB
@RelatedDocument private Address address;
{ "_id" : ObjectId(”….."),
"_entity_id" : NumberLong(1),
"_entity_class" : "net.. Person", "_entity_field_name" : "address",
"zip" : "94611", "street1" : "1 High Street", …}
70. Agenda
• Why NoSQL?
• Overview of NoSQL databases
• Introduction to Spring Data
• Using Spring Data for Redis
• Using Spring Data for Mongo
• Deploying on Cloud Foundry
71. Using Mongo and Redis with Cloud Foundry
• Create a Mongo or Redis service
• Bind the service to your application
• Access the service
• Via auto-reconfiguration
• Using <cloud:*/> namespace
80. About <cloud:mongo-db-factory/>
Use when multiple services
are bound
<cloud:mongo-db-factory
id="mongoFactory"
service-name="mongo1"
>
<cloud:mongo-options
connections-per-host="..."
]
max-wait-time="..."
/>
</cloud:mongo-db-factory>
81. NoSQL and Caldecott
• Caldecott let’s you tunnel to a NoSQL service
• Use Redis CLI
• Explore database, adhoc operations
• ...
• Use Mongo CLI etc
• Explore database, adhoc operations
• Mongo dump/restore
• ...
82. Summary
• NoSQL databases sometimes offer a combination of:
• Higher scalability and performance
• Schema less, richer data models
• Spring Data simplifies the development of NoSQL applications
• Cloud Foundry supports Mongo and Redis
83. @crichardson [email protected] http://plainoldobjects.com
Questions?
Sign up for CloudFoundry.com