Paul Done's Technical Blog
162 FOLLOWERS
A blog about enterprise software development and deployment. Browse through the blog to find useful articles on MongoDB.
Paul Done's Technical Blog
1y ago
Just over 2 years ago, I self-published the Practical MongoDB Aggregations eBook, which is also referenced by parts of the MongoDB Manual.
Now, there is a MongoDB Inc. officially endorsed paper and electronic version of the book, published by Packt. The Packt version of the book includes extra information on some topics and two additional example chapters.
You can purchase the book from the Packt website, Amazon, or other book retailers.
This Practical MongoDB Aggregations book helps you unlock the full potential of the MongoDB aggregation framework, including the latest features of ..read more
Paul Done's Technical Blog
3y ago
Introduction
When I started my MongoDB Inc career 8 years ago, the 'bootcamp' project topic I chose for self-learning was to investigate how to speed up aggregations via parallelism. Specifically, I investigated the benefits of splitting an aggregation into parts, each running against a subset of the data concurrently. At the time, my study yielded a positive outcome by reducing the response time of a "full collection scan" style aggregation (see my original unsharded and sharded results and write-ups). However, in hindsight, running everything inside a single laptop dulled the impact. In real ..read more
Paul Done's Technical Blog
3y ago
My book, Practical MongoDB Aggregations, was published this week.
The book is available electronically for free for anyone to use at: https://www.practical-mongodb-aggregations.com
This book is intended for developers, architects, data analysts, data engineers, and data scientists. It aims to improve your productivity and effectiveness when building aggregation pipelines and help you understand how to optimise their pipelines.
The book is split into two key parts:
A set of tips and principles to help you get the most out of aggregations.
A bunch of example aggregation pipelines for solving ..read more
Paul Done's Technical Blog
3y ago
Introduction
In a previous blog post I explored how to apply one-way non-reversible data masking on a data-set in MongoDB. Here I will explore why, in some cases, there can be a need for reversible data masking, where, with appropriate privileges, each original record's data can be deduced from the masked version of the record. I will also explore how this can be implemented in MongoDB, using something I call the idempotent masked-id generator pattern.
To accompany this blog post, I have provided a GitHub project which shows the Mongo Shell commands used for implementing the reversible data ma ..read more
Paul Done's Technical Blog
3y ago
Introduction
Data Masking is a well established approach to protecting sensitive data in a database yet allowing the data to still be usable. There are a number of reasons why organisations need to employ data masking, with two of the most common being:
To obtain a recent copy of data from the production system for use in a test environment, thus enabling tests to be conducted on realistic data which better represents the business, but with the most sensitive parts redacted. Invariably, there is an increased level of reliability in the results, when tests are applied on real data, instead of ..read more
Paul Done's Technical Blog
4y ago
Views in MongoDB appear to database users like read-only collections, ready to be queried in the same way normal collections are. A View is defined by an Aggregation pipeline and when a query is issued on a View, using find(), there is the potential for the execution of the View to be optimised by MongoDB in the same way as MongoDB would optimise any aggregation pipeline that is executed.
In reality, most applications will not issue a find() without specifying a query filter as an argument. This begs the question: When issuing a find() with a query filter against a View (backed by an ..read more
Paul Done's Technical Blog
4y ago
I've been learning Rust over the last month or so and I'm really enjoying it. It's a really elegant and flexible programming language despite being the most strongly typed and compile-time strict programming language I've ever used (bearing in mind I used to be a professional C & C++ developer way back in the day).
I'd recently read the really good and commonly referenced blog post Creating a REST API in Rust with warp, which shows how to create a simple example Groceries stock management REST API service, and which uses an in-memory HashMap as its backing store. As part of my learni ..read more
Paul Done's Technical Blog
4y ago
Introduction
I recently received some example bank payments data in a CSV file which had been exported from a relational database with that database's default export settings. After using mongoimport to import this data 'as-is', into a MongoDB database, I noticed that there was a nasty date field in each record. For example:
23-NOV-20 22.57.36.827000000
Why do I say nasty? Well if you lived through Y2K you should be horrified by the 'year' field shown above. How would you know from the data, without any context, what century this applies to? Is it 1920? Is it 2020? Is it 2120? There's no wa ..read more
Paul Done's Technical Blog
5y ago
In my previous post I explored Linux application support in ChromeOS and Chromebooks (a.k.a. Crostini). Of course I was bound to try running MongoDB in this environment, which I found to work really well (for development purposes). Here's my notes on running a MongoDB database and tools on a Chromebook with Linux (beta) enabled: In ChromeOS, launch the Terminal app (which opens a Shell inside the 'Penguin' Linux container inside the 'Termina' Linux VM)
Run the following commands which are documented in the MongoDB Manual page on installing MongoDB Enterprise on Debian (following the manual's t ..read more
Paul Done's Technical Blog
5y ago
These are my own rough notes from spending a few days studying Chrome OS and its Linux app support on a HP Chromebook 14* I got for free (retails for about £150) when I recently purchased a Google Pixel 4 Android mobile phone. I thought I’d share the notes in case they are of use to others. I’m sure there needs to be some corrections, so feedback is welcome. * released: 2019, model: db0003na, codename: careena, board: grunt
Some references to other articles that I used to bootstrap my knowledge:
Running Custom Containers Under Chrome OS from the Chromium OS Docs
A useful set of answers pro ..read more