Dataset Tag value - add/delete

I have a memory tag of datset as datatype.
I want to add/delete rows from it.
This operation will be performed by many users and there's possibility of performing this operation by many users at exact same time.
What will be the best way to do it.

Is there a reason to use a dataset tag instead of a database table and use named queries? I would imagine for cases where multiple users are reading/writing this may be a safer method.

With a dataset tag I don't think you can just append or remove lines, you need to overwrite the whole thing with your changed dataset. So simultaneous writes may cause issues.

I have many sessions consuming same data and then doing 'update' operation on it.
If i have 100 sessions running then it will display the same data to all by running 100 queries, which I want to avoid doing it on front end.

I was also looking to get the data from backend but the only way I can see is through tags.

You can "put data" in your library.
If you need it to persist between gateway restarts, use the system.util.globals dictionary.
Then make functions to add/remove things from your data structure (doesn't have to be a dataset, which data structure to use depends on your data and what you do with it), and call these functions from wherever you need to.