Best practices - Big data with mysql

133 Views Asked by At

I have a video surveillance project running on a cloud infrastructure and using MySQL database.

We are now integrating some artificial intelligence into our project including face recognition, plate recognition, tag search, etc.. which implies a huge amount of data every day

All the photos and the images derived from those photos by image processing algorithms are stored in cloud storage but their references and tags are stored in the database.

I have been thinking of the best way to integrate this, do I have to stick to MySQL or use another system. The different options I thought about are:

1- Use another database MongoDB to store the photos references and tags. This will cost me another database server, as well as the integration with a new database system along with the existent MySQL server

2- Use elastic search to retrieve data and perform tag searching. This leads to question the capacity of MySql to store this amount of data

3- Stick with MySQL purely, but is the user experience will be impacted?

Would you guide me to the best option to choose or give me another proposal?

EDIT:

For more information: The physical pictures are stored in cloud storage, only the URLs are stored in the database. In the database, we will store the metadata of the picture like id, the id of the client, URL, tags, date of creation, etc...

Operations are of the type : It will be generally a SELECTs based on different criteria and search by tags

How big the data is? Imagine a camera placed outdoor in the street and each time it detects a face it will send an image.

Imagine thousands of cameras are doing so. Then, we are talking about millions of images per client.

1

There are 1 best solutions below

2
On

MySQL can handle billions of rows. You have not provided enough other information to comment on the rest of your questions.

Large blobs (images, videos, etc) are probably best handled by some large, cheap, storage. And then, as you say, a URL to the blob would be stored in the database.

How many rows? How frequently inserting? Some desired SELECT statements? Is it mostly just writing to the database? Or will you have large, complex, queries?