If you want to stream high volumes of data, be it for ETL streaming or event sourcing, Google Cloud Pub/Sub is your go-to tool. It's easy to learn, easy to observe its metrics and scales with ease without additional configuration so if you have more producers of consumers, all you need to do is to deploy on k8s your solutions so that you can perform autoscaling on your pods to adjust to the data volume. The DLQ is also very transparent and easy to configure. Your code will have no logic whatsoever regarding orchestrating pubsub, you just plug and play. However, if you are not in the Google Cloud Pub/Sub environment, you might have trouble or be most likely unable to use it since I think it's a product of Google Cloud.
MySQL is best suited for applications on platform like high-traffic content-driven websites, small-scale web apps, data warehouses which regards light analytical workloads. However its less suited for areas like enterprise data warehouse, OLAP cubes, large-scale reporting, applications requiring flexible or semi-structured data like event logging systems, product configurations, dynamic forms.
With a pub/sub architecture the consumer is decoupled in time from the publisher i.e. if the consumer goes down, it can replay any events that occurred during its downtime.
It also allows consumer to throttle and batch incoming data providing much needed flexibility while working with multiple types of data sources
A simple and easy to use UI on cloud console for setup and debugging
It enables event-driven architectures and asynchronous parallel processing, while improving performance, reliability and scalability
Learning curve: is big. Newbies will face problems in understanding the platform initially. However, with plenty of online resources, one can easily find solutions to problems and learn on the go.
Backup and restore: MySQL is not very seamless. Although the data is never ruptured or missed, the process involved is not very much user-friendly. Maybe, a new command-line interface for only the backup-restore functionality shall be set up again to make this very important step much easier to perform and maintain.
It serves all of our purposes in the most transparent way I can imagine, after seeing other message queueing providers, I can only attest to its quality.
For teaching Databases and SQL, I would definitely continue to use MySQL. It provides a good, solid foundation to learn about databases. Also to learn about the SQL language and how it works with the creation, insertion, deletion, updating, and manipulation of data, tables, and databases. This SQL language is a foundation and can be used to learn many other database related concepts.
It is easy to create Google Cloud Pub/Sub topics from both Web Console and CLI commands.
Google Cloud Pub/Sub supports creation of one or more subscriptions.
By supporting a BigQuery Pub/Sub subscription to automatically write to a BigQuery table it simplifies development by avoiding implementation of a custom micro service for writes to BigQuery.
I give MySQL a 9/10 overall because I really like it but I feel like there are a lot of tech people who would hate it if I gave it a 10/10. I've never had any problems with it or reached any of its limitations but I know a few people who have so I can't give it a 10/10 based on those complaints.
They have decent documentation, but you need to pay for support. We weren't able to answer all our questions with the documentation and didn't have time to setup support before we needed it so I can't give it a higher rating but I think it tends to be a bit slow unless you're a GCP enterprise support customer.
We have never contacted MySQL enterprise support team for any issues related to MySQL. This is because we have been using primarily the MySQL Server community edition and have been using the MySQL support forums for any questions and practical guidance that we needed before and during the technical implementations. Overall, the support community has been very helpful and allowed us to make the most out of the community edition.
Having used Amazon Web Services SNS & SQS I can say that even if the latter may offer more features, Google Cloud Pub/Sub is easier to use. On the other hand, usage of SNS & SQS as well as documentation and troubleshooting is easier with the AWS solution. Since we are not using GCP only for Pub/Sub the choice depends on other variables.
MongoDB has a dynamic schema for how data is stored in 'documents' whereas MySQL is more structured with tables, columns, and rows. MongoDB was built for high availability whereas MySQL can be a challenge when it comes to replication of the data and making everything redundant in the event of a DR or outage.
You can just plug in consumers at will and it will respond, there's no need for further configuration or introducing new concepts. You have a queue, if it's slow, you plug in more consumers to process more messages: simple as that.