RavenDB provides ESO with HIPAA compliance, on/off-line functionality, and the ability to automatically respond to data events in their field device solutions for emergency responders. Devices that are equipped with their app and a server continue to work without interruption whenever offline, data integrity is maintained, and data events are automatically securely streamed to and from a cloud infrastructure whenever devices are online.
ESO provides technological solutions to integrate the data generated by emergency responders with hospitals and governmental agencies. They also provide solutions to streamline safety inspection procedures that are aimed at preventing emergencies. Their field devices must reliably sync with the main database even in rural situations where internet connectivity can be unpredictable. For example, if the information provided by first responders doesn’t sync to the emergency room, the doctors there may not know which medicines were already given.
Their previous solution didn’t provide this kind of reliability and because it was based on a relational model, it took a long time to develop in each release cycle. They needed to improve reliability and streamline their DevOps for a new solution that would integrate smoothly into their existing system.
What did they use before RavenDB?
Most of their cloud-based systems use relational databases. In devices for emergency responders, they used an embedded relational database, which worked, but the typical problems with SQL databases surfaced. Handling schema evolution, the latency of joining multiple tables to display needed information, and replicating data in a cloud and local (occasionally connected) infrastructure.
They also needed a better solution for ambulances and other devices that sometimes disconnect from the internet. They noticed that embedding RavenDB can give their devices ‘occasionally connected’ functionality to be fully operational if disconnected, then automatically sync with the central system as soon as the device reconnects. RavenDB is perfect for Domain Driven Design, handles event streaming well which gives them more functionality, integrates well with their main relational data system, and has a robust .NET API.
Embedding RavenDB in our devices gave us more reliability and a wealth of new functionality. It allowed us to stream events into other services in real time…and to project efficient shapes of screens that have vast amounts of data in a document format for fast materialization and viewing.Brandon Martinez, Chief Technology Officer at ESO
Why they prefer RavenDB
Industry-standard security without headaches
Data safety in health-related fields is critical, both for privacy and for caregivers to always have access to crucial information. RavenDB features Libsodium encryption at rest and in transit, automatic backups to various locations, self-renewing X.509 certificates from Let’s Encrypt, or various options to use your own certificates, including writing your own storage scripts and/or storing them in vault solutions. Cloud instances have certificates by default, and it only takes a few minutes to set them up on-premise. Automatic backups are easy to set up to save to multiple locations.
If a server in a database group of nodes goes down, RavenDB automatically and instantly transitions all database operations to another node in the cluster and updates the downed server when it comes back online. Your application and customers won’t feel a thing.
Authorization levels are set with client certificates, where database admins can specify access levels per database per client. When each client has its own set of permissions, it is intuitive to create separate clients for different types of scenarios in a microservices environment.
On/off-line server functionality
Devices in the field need to run smoothly even when there is no internet connectivity, then they synchronize local data to cloud servers automatically when connected.
Medical data must be accurate for professionals to make good decisions. RavenDB uses ACID transactions by default at impressively high performance. With RavenDB there is no need to worry about losing data.
Responding automatically to data events
RavenDB Data Subscriptions allow you to receive notifications when certain events occur in the database. RavenDB Data Subscriptions provide asynchronous functionality of messaging services and event streaming to integrate complex systems. They enable your clients to respond to changes in your data in real time. Subscriptions can be useful for building real-time applications and for triggering other processes or actions based on changes in the database.
Subscriptions are an ongoing task where you define a query from the client. Whenever data is updated and relevant to that query, the information will be sent to the client as an event. You can then code your client to respond to various events. You can also set multiple concurrent subscriptions to feed various clients.
Lightweight, high-performance embedded servers
RavenDB can perform about 20,000 reads per second on hardware as small as a Raspberry Pi. RavenDB self-optimizes to run efficiently on various hardware types, making it as practical in edge deployments as on the cloud or on-premise. For their purposes, ESO doesn’t need this level of performance in their field device software. If they want to add functionality that requires fast processing of data, RavenDB would gracefully provide it, as it has in other use cases.
Sync distributed edge devices with main system
Setting up the infrastructure for an efficient distributed network can be done very efficiently in RavenDB. This is useful in globalized scenarios and edge deployments where there are various endpoints. Some of the data generated at the end-points doesn’t need to be sent via the network, so RavenDB offers native filtered Hub/Sink replication and various ETL data transfer options.
Unique indexing and projections to display selected data quickly
RavenDB’s unique approach to indexing hyper-boosts queries, consistently providing <30ms queries that would otherwise take >3,000ms with other databases. Data projections further reduce the work required by specifying which fields of the documents you want the query to pull without needing time-consuming normalization. Some think that querying NoSQL documents means that queries have to do much more work and transfer more data, but with RavenDB’s indexes and data projections, you can quickly display screens with selected data that would otherwise require multiple table joins.
RavenDB is built in C# for .NET, which is ESO’s primary language. It can run smoothly on Windows, Linux, and Mac. It has API for many languages, including Node.js, Java, Python, PHP, Ruby, Go, Elixir, and more, which covers most organizations’ data management needs.
RavenDB also integrates smoothly with most existing relational systems for a CQRS query-side setup.
RavenDB constantly upgrades by communicating with its users
Much of RavenDB’s extremely rich feature set was developed thanks to many users discussing their needs with us and asking for help. ESO was able to successfully upgrade to the newest version of RavenDB to take advantage of several new features and performance enhancements. The transition has been beneficial to paramedics using the software in the field.
ESO offers an integrated suite of software products for EMS agencies, fire departments, and hospitals that are transforming the way first responders collect, share, report, and analyze critical information to improve community health and safety. In emergency situations, ESO’s solution improves consistency of care with real-time updating of patient condition and treatment received during each stage of care. It also provides instant HIPAA-compliant access to patients’ medical backgrounds, allergies, and other vital information. To help fire agencies prevent fire emergencies, they also digitize and streamline safety inspection procedures, issue building permits, maintain fire hydrants, and more. ESO helps these organizations fulfill regulatory requirements, monitor the status of supplies and equipment, financials, QA, scheduling, shared medical records, and more.