When FLiK launches, it needs to support millions of users. Not ready to tell what it does…yet. To avoid technical debt in the future, the goal is to pick a database that will not need to be replaced at some inconvenient future point. It may not be possible, but we are looking at separating the authentication, data, business logic and data storage. Developed correctly, we should be able to replace any major part without changing everything. At least that is the plan.
ChatGPT provides a good list to consider from a technical perspective. What it missed were considerations like recruitment: How hard to find people with the skills. In addition: ecosystem: How many 3rd party products add functionality? It mentioned “community” but that is different from the ecosystem around the technology.
What are a list of attributes to consider when comparing open source databases for a project that needs to scale into millions of users
When comparing open source databases for a project that needs to scale into millions of users, there are several key attributes to consider:
- Scalability: The database should be able to handle a large number of users and a high volume of data without performance degradation. It should also support horizontal scalability, meaning that it can handle more load by adding more machines to the system.
- Performance: The database should have good performance characteristics and be able to handle a high number of concurrent users and transactions. It should also have low latency and high throughput.
- Data Model: The database should support the data model that best fits your application’s needs. For example, if your application requires a lot of real-time data, a document-based or a key-value store might be a better fit than a traditional relational database.
- Data Integrity: The database should ensure that data is stored and retrieved consistently and correctly. It should also have built-in mechanisms for data validation and error handling.
- Data Security: The database should have built-in security features to protect against unauthorized access and data breaches. It should also support encryption of data at rest and in transit.
- Data Management: The database should have built-in tools for managing and maintaining the data, such as backup, restore and disaster recovery.
- Ease of Use: The database should have a simple and easy-to-use interface that is easy to learn and use. It should also have good documentation and a large and active community for support.
- Community and Support: The database should have a large and active community of developers and users that can provide support and contribute to the development of the database.
- Licensing: It’s important to consider the licensing of the database, some databases are more open than others, and may have more restrictive terms. It’s important to understand the terms of the license and ensure that they align with your project’s needs.
- Cloud integration: If you are planning to use cloud services, it’s important to consider if the database have native support for cloud services like AWS, GCP, Azure, etc. This will make it easier to scale and manage the database in the cloud.
- Compatible with other technologies: It’s important to consider if the database is compatible with the other technologies that you will be using in your project. This will help ensure that the database can integrate seamlessly with the rest of your stack.
- Cost: Finally, it’s important to consider the total cost of ownership, including the cost of hardware, software, and support, as well as the cost of any additional services or tools you may need.