In this article I will post standard patterns and best practices on certain design challenges. I aim to keep it concise which helps readability.
1. Store images in database
It is possible to store images directly in an attribute of a table in your database. This can be basically done with all database, both SQL as NoSQL oriented. It can be done in two ways:
- Store the binary data of the image as a large blob in an attribute. This will create huge databases with bad performance.
- Store the location of the file in the database and store the file in a file system.
Use option 2 for most use cases as that is a way more efficient and effective method for storing and retrieving images.
- Database storage is more costly than BLOB/File storage.
- Reading from file system is faster than from Database.
2. Duplication of data
In certain circumstances it is required to duplicate data. This could be because calculations must be done based on that data or when adjustments must be made to the data.
In general we state that data is not duplicated, unless. Data can also be duplicated temporarily meaning that a temporary data store can be used to duplicate the data for certain situations. Once done, the temporary data store can be cleaned again.
3. No Business Logic in the source
In order to prevent point-to-point solutions with a lot of combinatorial effects, business logic is preferably applied within the consuming application. In this way, the sources can focus merely on delivering the raw data.
4. Use of standardized ETL tooling to limit complexity
A standard tool in the cloud that provides ETL capability is Data Factory. This can be used to orchestrate but also execute transformations on data.