I need some functionality for dynamic creation table in DB.
Algorithm is:
1) register new user -> make record in DB (this is simple)
2) after registration create table like user_data_abcdef123456... where abcdef123456 - is random pregenerated hash. this table must created from (for example) existing default entity (user_data_)
Entity:
Path\To\Entity\UserData:
type: entity
table: user_data_
....
in Controller do like this:
$doctrine = $this->getDoctrine();
/** @var AbstractSchemaManager $manager */
$manager = $doctrine->getConnection()->getSchemaManager();
/** @var ClassMetadata $metadata */
$metadata = $doctrine->getManager()->getClassMetadata($class);
$metadata->setPrimaryTable(array('name' => $metadata->getTableName() . $project));
$table = new Table($metadata->getTableName());
$manager->createTable($table);
and I need set all column, all index.. etc.
Is there any correct solution?
user_data_abcdef123456...is a table-logger events store data table with fieldsevent_name,event_value,event_type,event_dateand about 1 000 000 events per day per user income into DB... Than is why we decide to separate tables per users. The reasons are: minus one index, make partition by date only, the table size = (old table size) / (user count) -> search faster, easy move one user data table to separate DB server, etc...