[odb-users] How to operate shared mysql databases and tables through ODB?

Boris Kolpackov boris at codesynthesis.com
Fri Aug 6 07:02:51 EDT 2021


karnlai(赖正敏) <karnlai at tencent.com> writes:

> As the data volume is growing rapidly, we need to use shared database
> and tables in our project to ensure performance and reliability.
> 
> Suppose we have db_00, db_01,…, db10, and each db has tb_00, …., tb…10,
> where the structure of each db and each table is same. They only differ
> in name.
> 
> According to the doc of ODB, each entity is mapped to a table, but it
> is inefficient to create 10 different classes with same fields for the
> 10 tables which only differ in name, right?

Yes, an ODB persistent class maps to a specific database table name
(there are good reasons for this, such as the use of prepared statements).
So you will need to use MySQL-level mechanisms to establish the "context"
in which this name is resolved. One such mechanism is the USE statement[1]
which allows you to designate a specific database as the default:

https://dev.mysql.com/doc/refman/8.0/en/use.html

I don't believe there is a similar mechanism for tables so if you need
this, duplicating the class (perhaps with an abstract base class and a
template implementation) is your best option.



More information about the odb-users mailing list