Name: Christopher Lewis
Member since: 2001-02-13 17:55:45
Last Login: N/A
Notes:
12 Mar 2001 (updated 12 Mar 2001 at 17:44 UTC) »
I had recently decided to undertake an Obj-C project which would require a database backend. While I was thinking about file formats (before deciding not to reinvent the wheel, and while I thought I might implement the database part myself), I thought I'd dispense with file and record locking by having a single data manager which was messaged by (and messaged) an arbitrary number of client-interface-managers. Since only one object did read/write, file locking was unnecessary. I was excited to see Suneido use the same idea (no file/record locking, because a single database manager had exclusive read/write to files); not having studied databases, I thought it was interesting I'd come up with the same solution to simplify the ssytem. (ie, I was proud of myself for guessing a solution that turned out to be in existence)
BUT: what happens when the single database manager gets
so
many requests for data and instructions to write data that
one manager running on one machine can't possibly withstand
the load? If you scale this to enough clients, it will
eventually happen regardless how small and quick the manager
is. And if the manager is doing complicated search logic,
these requests could potentially be so burdensome that even a
relatively small number would kill it. Some possibilities
that come to mind are:
(a) have several managers acting as peers to service requests
filtered through a load-balancer; each manager has equal
access to a shared drivespace ... but now they need to either
(i) use file locking not to overwrite one another with
simultaneous write requests,
(ii) message one another to be sure nobody else is
working on a simultaneous request that interferes, which
could be a problem by causing delays while the managers
message one another about individual files and waiting for
the results instead of just getting the results, or
(iii) the load balancer keeps all requests for any
particular record going to the same database manager ... but
if the clients don't know which records they're looking for
until the search logic is processed, which is likely in lots
of database uses, this can't be done without additional
access by the load-balancer to the data, which makes the
"database managers" irrelevant since the work is being done
by the load-balancer .... or (hopefully not)
(b) it doesn't scale beyond the capabilities of the box
containing the database manager, so either use a big, butch
box or a non-intense request load.
Have I missed something? Please write. I'm trying to deal with the same problem myself, and am interested in either (a) using your solution as a backend for handling my problem, or (b) using your solution to enlighten my search for my solution.
I'm interested in creating a piece of open-source-ware which is capable of handling enterprise-level demands, so these concerns are fairly serious to me. Personally I will not soon need anything requiring load balancing of requests, but I think this is better built in than bolted on (like security). Also: Suneido's site offers binaries built for operating systems which offer apps the Win32 API ... does Suneido require this API? (I haven't looked at the code.) Assuming the guts of Suneido are mostly code for handling Suneido's OO language and its search info, there's little obvious reason the Win32 API need be invoked ... although the code for controlling MS "Windows" UI elements certainly would have to be.
Will Suneido be portable to non Win32 environments? Will it turn up on *nix boxes where I will want to use it? And mostly: How do you answer extreme request loads? (ie, assuming you put the database manager module on a dedicated box and this is not enough to satisfy the requests?) Is this a concern for Suneido?
Best wishes!
Edited Later: Andrew McKinlay
posted this in Suneido's forums for discussion, and answered
there that scalability was (at least temporarily) a sacrifice
made for performance and for expediance (to get a product
working, so people don't get tired cosing forever without the
payoff of seeing the code doing work)
http://www.suneido.com
A self-policing community could be achieved in this way, though the possibility exists that a litigious person could try to take a complaint to court. The positive side is that they're going to have to pay their attorney up-front, because an attorney looking at an apparently valid arbitration clause will not risk his own money walking into court when mandatory arbitration has been ignored .... And attorneys' fees are an effective bar to litigation for most complaintants. It's only certain types of well-heeled people that remain a problem.
An access problem exists, though: if the community's recources are available on the internet, people will be tempted to link to them in ways that ignore the sign-in sheet; so every page will have to look for a "I accepted the arbitration clause" cookie, and give non-cookie users the agreement first. Also, people tend to copy and paste text -- sometimes with attribution -- into emails, online bulletin boards, etc. People who do this will expose content which members think is not going to the courts to the world at large, which is not party to the membership agreement. One needs to think about what to do with reposts, and whether arbitration panels need some guidelines, such as a Membership Credo, to inform their judgment as to what to make of complaints.
Lawyer-free zone is "interesting" in concept, but what does one want to do that one is afraid of being sanctioned for in court? Or is not the sanction, but the fear of the expense of court? A more complete idea of what you want out of the "lawyer-free zone" is needed before it can be designed. Keep thinking on it.
SeaDragons certified others as follows:
Others have certified SeaDragons as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!