Alan Gauld wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">
<[email protected]> wrote
The thing that bothers me is that I ma have 10 users or 100,000 users
and really wanted to get an opinion as to which option would scale
better, leaving aside the relational DB approach.
If you have to cater for 100,000 users all with different views on a
common set of resources I don;t think you can afford to leave aside
the database approach! Almost anything else will run like a dog with a
broken leg...
10 users with 100,000 resources would be fine but 100,000 users
will be a problem if you try to use the filesystem as an organising tool.
The trick to using the database is to build the relationships in the
database but keep the resources in the filesystem. You can then query
the database for which resources to display then access the resources
directly from disk using their filenames etc
HTH,
+1 you need a database to keep track of 100,000 users. Scaling is
what databases do best.
That doesn't mean you necessarily need a "real database" yet. But if
you start with a database-compatible approach, then you'll be able to
scale it into a database when the users grows enough.
However, whether or not you use a database, you still have to design the
interactions. If these filenames have to be unique, then it'd be quite
difficult to check that if they were all in separate directories. So
adding a new file would require that you check in all the directories to
make sure the selected name is unique. So updating a single file would
be very slow. Cure for that is either to put them all centrally, or
make the name arbitrary. This is equivalent in database terms to using
an ID (integer) abstraction to identify people, since their name field
might not be unique.
If you're trying to use the file system as your database, you have to
consider three tradeoffs:
1) how to make sure things are self-consistent, according to whatever
the business rules are.
2) how to minimize access time for more than one kind of query
3) how to reconstruct things when something goes wrong (which it will).
And of course you have to decide which problems are to be recoverable
and which ones are catastrophic.
DaveA
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor