If there really is the prospect of a “large database table containing billions of billions of billions of rows,” then perhaps you should develop a solution for your specific needs around a (relatively) sparsely populated table.
Large database tables pose a significant performance issue in how quickly the system can find the corresponding rows or rows. It really needs indexes and primary keys; however, they add to storage requirements and also require processor cycles to be maintained as records are added, updated, and deleted. In addition, heavy-duty database systems also have partition functions (see http://en.wikipedia.org/wiki/Partition_(database )) that address such string performance problems.
A too-populated table may probably serve the purpose, assuming that the default (computable or constant) can be used when no rows are returned. Insert lines only where something other than the default value is required. A sparsely populated table will require much less storage space, and the system will be able to find rows faster. (Using custom functions or views can help simplify the query.)
If you really cannot make a sparsely populated table for you, then you are completely stuck. Perhaps you can make this huge table into a collection of smaller tables, although I doubt that any help if your database system supports partitioning. In addition, a collection of smaller tables makes the query more messy.
So, let's say you have millions or billions of Users who or not have certain privileges regarding the millions or billions of articles on your system. What then determines at the business level that the User has the privilege to do with this Article? Should the user be a (paying) subscriber? Or can he be a guest? Does the User use (and pay for) a package of certain articles? Can a user get the privilege of editing certain articles? And so on.
So, let's say, some User wants to do something with a specific Article. In the case of a sparsely populated SELECT table on this great table, UsersArticles will either return 1 row or nothing. If he returns a string, you will immediately find out what happens with ArticleUserAuthorization, and can continue with the rest of the operation.
If there is no line, then perhaps it’s enough to say that the User cannot do anything with this article. Or maybe the User is a member of some UserGroup that has the right to certain privileges on any article that has some ArticleAttribute (which this article has or does not have). Or maybe the article has an ArticleUserAuthorization article by default (stored in some other table) for any User who does not already have such an entry in UsersArticles. Or something...
The fact is that in many situations there is a structure and regularity that can be used to reduce the resources needed for the system. For example, people can add two numbers, each of which can contain up to 6 digits, without consulting a table of more than one and a half trillion records; that use structure. Regarding regularity, most people have heard of the Pareto principle (the "80-20" rule - see http://en.wikipedia.org/wiki/Pareto_principle ). Do you really need to have "billions of billions of billions of lines"? Or it would be true to say that about 80% of Users will only have (special) privileges for perhaps hundreds or thousands of articles - in this case, why spend other billions of billions of dollars (rounded: -P).