Now let us look at a person object.
"Privacy is having control of who gets to see what.Rick Falkvinge
To give you such control, I break your professional information into different chunks, and allow you to set the access settings for each chunk. I break your personal information into sections, Credentials, Contact Info, Resume, and Questionnaire. You get to choose who gets to see what section. Things can be Public ally Visible, Hiring Manager Visible, Recruiter Visible, PrivaCV Recruiter visible, Christopher Lozinski Visible, and Candidate visible. In the future additional options sections, maybe even your dating preferences, and additional permissions will be available.
This approach breaks a person into a tree of objects. Every branch of the tree has a permissions object.
Then let us look at the tree of objects for a candidate and a hiring manager.
Try storing this in a relational database. Not a chance. It would take too many disk accesses to access. I pickle it all into a single ZODB object. It gets loaded in a single disk access. Well actually two disk accesses, because resumes are stored elsewhere. Take a look at the zopache.com tree and see how fast it loads. I do not understand why more people do not use the ZODB for tree based applications. PAUSE TO DISCUSS