The considerations for splitting into separate databases include governance, logical isolation, and performance aspects related to metadata caching. Here are the key points:
Governance and Isolation: Different databases can have different owners and permissions, allowing for better governance. This is particularly important when different teams or departments manage their own data.
Logical Grouping: Currently, without support for custom schemas, databases serve as the primary mechanism to logically group tables and views. This will change when custom schemas are introduced.
Performance on Metadata Caching: The packdb caches metadata per database. A single large database with all tables may complicate this caching process, although the practical impact is likely minimal except in specific scenarios.
Cross Database Queries: At present, cross-database queries are not supported, making it impractical to have a separate database for each table if joins are required. When cross-database queries are supported, they may incur some performance degradation compared to querying within the same database due to metadata storage methods.
Security: From a security perspective, Role-Based Access Control (RBAC) can be applied at the table level to restrict access to specific users, enhancing data security.
In summary, while there are some advantages to splitting databases, such as improved governance and security, the current limitations regarding cross-database queries and potential performance issues should be carefully considered before making a decision.
https://firebolt.io/faqs-v2-knowledge-center/what-are-the-considerations-for-splitting-into-separate-databases