Let me add a few Lightstreamer-related notes.

If your aim is to perform one single loop, fetching all the rows of the "data" table at regular times,
so that, upon each row found, you can update the corresponding subscription (i.e. the item which corresponds with the row key),
this is also feasible.
Just consider that, for each line found, you will have to check whether the corresponding item is currently subscribed to,
because only in this case can update or smartUpdate be invoked
(hence the need to synchronize on subscribedItems, i.e. the set of the active subscriptions).

Such a loop should be active anytime there is at least one active subscription; you may choose to start it at Data Adapter initialization and keep it always running.

Obviously, depending on the size of the table and the client activity, most of the loop operations may be redundant.
Also note that, as long as the contents of the table don't change for a key, the updates you send for that key are also redundant: the Server will recognize that nothing has changed and will just discard the update.