Description
Is your feature request related to a problem? Please describe.
We are inserting ~20,000 rows per second to ~200,000 different tables (spread relatively equally). Each table is used to store a user activity on our service (they are daily-partitioned using a custom timestamp column, and have specific settings like partition expiration that differs between users/tables).
We are experimenting migrating from the legacy .insertAll
streaming insert API to the new storage write API, and the new API doesn't seem to be designed for mass-inserting to many different tables. In our case, this would mean opening tens of thousands of streams for a small write throughput on each, and spreading those over hundreds of connections. Aside from resulting in a very complex custom load-balanced implementation, this just doesn't seem to be a fit for a many-tables streaming insertion scenario, and won't scale as we grow.
Describe the solution you'd like
Ideally, we would want to use a stream to insert in different tables in a dataset (or any dataset), the same way the legacy .insertAll
API works where an HTTP/2 stream is used to POST rows to any table.
Describe alternatives you've considered
Aside from sticking with the legacy .insertAll
streaming insert API, we don't see any non-legacy alternatives.
Additional context
Our user base is growing rapidly, so any workaround that would work for 200,000 tables but not 500,000 tables is a no-go for us.
Activity