1.) If "All of the ... content is extracted from the binary record stored
as
a single field in the [MSP_PROJECTS] table", then why even have all of the
227 other tables? If "the contents of the tables you see in the database
as
[MSP_] anything do not contain the active data that the system is
processing", then why do MS Project & MS Project Server execute stored
procedures & uncompiled queries (ugh) against those very tables?
2.) If [all of the actual project record data is stored as binary], my
god,
what a great way to use the power of of a relational database! We'll just
not
bother with all of that pesky indexing and referential integrity, let's
just
turn SQL Server into a big ole bit bucket. And to disguise the fact that
anything that's actually important is stored as a blob, we'll surround the
blobs with a bunch of tables that look and feel like relational objects,
but
are really just window dressing. Makes perfect sense.
3.) If 1 & 2 are ture, how come the response time decreases when I apply
proper (IMHO) indexing?
As a database guy, I really don't care about the API, do I? I care about
the
well-being, integrity & response of the data, not how you get at it. Good
n-tier design (that thing that everybody talks about but nobody actually
does) requires (REQUIRES!) that the data store be totally ignorant of how
I
access it. I should get the same beautiful response whether I request
Project
Server data from MS Project using Microsoft's API, MS Excel via OLEDB/ODBC
or, good gawd a'mighty, my own custom API. I have three separate clients
who
have evaluated and rejected Project Server because they couldn't get under
the covers and understand what was going on with the data and make it fit
their own existing company data. That's not me taking, that's the guys who
write the checks. Example: try to integrate a company employee list stored
in
a separate SQL Server (or Oracle or whatever) table with the Project
global
resource list, the goal being to add a new employee to the company table
and
have it appear as a resource w/o having to enter/import/synchronize
through
Project. A perfectly reasonable business request that can't be done with a
blob & the MS API, folks. What's Project Server gonna say about ten
resources
named "John Smith"? Again, a perfectly reasonable business situation that
I
can't address if I can't get under the covers.
And I understand development cycles and backward compatibility; but I
don't
see many people riding horses to work in the morning or feeding their
Chevys
hay & oats.
Gary L. Chefetz said:
Babs:
Rod is correct. The contents of the tables you see in the database as
"MSP_"
anything do not contain the active data that the system is processing.
All
of the "MSP_" data content is extracted from the binary record stored as
a
single field in the "MSP_PROJECTS" table. The "MSP_WEB_" data is the
active
data source for Project Server/PWA added features. Understand that all of
the actual project record data is stored as binary. Not all of the data
comprising a project is available through the database tables. Much
remains
accessible only through the Project Object Model.
The 2007 approach is a step in the right direction and toward your
approval
as it promises to give us a fully functional API. I suppose we could get
into a debate about logical database design versus physical database
design,
and how normalization may be the goal for the former and not necessarily
the
latter, but we can't put it into the context in which the Project product
team is operating in. Without knowing what the development constraints
these
folks are facing, it's difficult for me to be too hyper-critical. Keep in
mind that Microsoft has a habit of trying to make everything backward
compatible, and at a certain point that makes it difficult to stage a
development revolution.
in
message news:
[email protected]...