![Coding Blocks artwork](https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/f0/b6/68/f0b6682f-e8bc-181c-95a9-0756ddf63d6e/mza_3128980961332034780.jpg/100x100bb.jpg)
Multi-Value, Spatial, and Event Store Databases
Coding Blocks
English - March 04, 2024 01:51 - 5 MB - ★★★★★ - 924 ratingsTechnology Education How To Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
We are mixing it up on you again, no Outlaw this week, but we can offer you some talk of exotic databases. Also, Joe pronounces everything correctly and Allen leaves you with a riddle. The full show notes are available on the website at https://www.codingblocks.net/episode229 News Multivalue DBMS Spatial DBMS Event Stores Resources we like […]
We are mixing it up on you again, no Outlaw this week, but we can offer you some talk of exotic databases. Also, Joe pronounces everything correctly and Allen leaves you with a riddle.
The full show notes are available on the website at https://www.codingblocks.net/episode229
News
Thanks for the reviews!
ivan.kuchin (has taken the lead!), Yoondoggy, cykoduck, nehoraigold
Want to help us out? Leave a review! (reviews)
Multivalue DBMS
Popular: 86. Adabas, 87. UniData/UniVerse, 147. JBase
Similar to RDBMS – store data in tables
Store multiple values to a particular record’s attribute
Some RDBMS’s can do this as well, BUT it’s typically an exception to the rule when you’d store an array on an attribute
In a MultiValue DBMS – that’s how you SHOULD do it
Part of the reason it’s done this way is these database systems are not optimized for JOINS
Looked at the Adabas and UniData sites – the primary selling points seem to be rapid application development / ease of learning and getting up to speed as well as data modeling that closely mirrors your application data structures
I BELIEVE it’s a schema on write (docs.rocketsoftware.com)
Supposed to be very performant as you access the data the way your application expects it
Per the docs, it’s easy to maintain (Wikipedia)
Spatial DBMS
Popular: 29. PostGIS, 59. Aerospike, 136. SpatiaLite
Provides the ability to efficiently store, modify, and query spatial data – data that appears in a geometrical space (maps, polygons, etc)
Generally have custom data types for storing the spatial data
Indices that allow for quick retrieval of spatial data about other spatial data
Also allow for performing spatial-specific operations on data, such as computing distances, merging or intersecting objects or even calculating areas
Geospatial data is a subset of spatial data – they represent places / spatial data on the Earth’s surface
Spatio-temporal data is another variation – spatial data combined with timestamps
PostGIS – basically a plugin for PostgreSQL that allows for storing of spatial data
Additionally supports raster data – data for things like weather and elevation
If you want to learn how to use it and understand the data and what’s stored (postgis.net)
Spatial data types are: point, line, polygon, and more…basically shapes
Rather than using b-tree indexes for sorting data for fast retrieval, spatial indexes that are bounding boxes – rectangles that identify what is contained within them
Typically accomplished with R-Tree and Quadtree implementations
RedFin – a real estate competitor to realtor.com and others, uses PostgreSQL / PostGIS
Quite a bit of software that supports OpenGIS so may be a good place to start if you’re interested in storing/querying spatial data
Event Stores
Popular: 178. EventStoreDB, 336. IBM DB2 Event Store, 338. NEventStore
Used for implementing the concept of Event Sourcing
Event Sourcing – an application/data store where the current state of an object is obtained by “replaying” all the events that got it to its current state
This contrasts with RDBMS’s in that relational typically store the current state of an object – historical state CAN be stored, but that’s an implementation detail that has to be implemented, such as temporal tables in SQL Server or “history tables”
Only support adding new events and querying the order of events
Not allowed to update or delete an event
For performance reasons, many Event Store databases support snapshots for holding materialized states at points in time
EventStoreDB – https://www.eventstore.com/eventstoredb
Defined as an “immutable log”
Features: guaranteed writes, concurrency model, granulated stream and stream APIs
Many client interfaces: .NET, Java, Go, Node, Rust, and Python
Runs on just about all OSes – Windows, Mac, Linux
Highly available – can run in a cluster
Optimistic concurrency checks that will return an error if a check fails
“Projections” allow you to generate new events based off “interesting” occurrences in your existing data
For example. You are looking for how many Twitter users said “happy” within 5 minutes of the word “foo coffee shop” and within 2 minutes of saying “London”.
Highly performant – 15k writes and 50k reads per second
Resources we like
Database Rankings (db-engines.com)
Tip of the Week
If your internet connection is good, but your cell phone service is bad then you might want to consider Ooma. Ooma sells devices that plug into your network or connect wireless and provide a phone number, and a phone jack so you can hook up an an old school home telephone. We’ve using it for about a week now with no problems and it’s been a breeze to set up. The devices range from $99 to $129 and there’s a monthly “premier” plan you can buy with nifty features like a secondary phone line, advanced call blocking, and call forwarding. (ooma.com)
Why use “git reset –hard” when you can “git stash -u” instead? Reset is destructive, but stashing keeps your changes just in case you need them. Because sometimes, your “sometimes” is now!
“git reset –hard”.
“git stash -u”