dbTalk Databases Forums  

Very ignorant question

comp.databases.pick comp.databases.pick


Discuss Very ignorant question in the comp.databases.pick forum.



Reply
 
Thread Tools Display Modes
  #11  
Old   
Simon Verona
 
Posts: n/a

Default Re: Very ignorant question - 01-15-2006 , 12:33 PM






Ross...

Sound almost like one of my posts!!! Roll on MV2006.

Simon
"Ross Ferris" <rossf (AT) stamina (DOT) com.au> wrote

Quote:
IIRC you need to use the d;c structures to make exploding sorts work
(BOM type stuff - oh no, wait, that's the "V" correlative on the data
portion of the file ...sheesh!)

Whilst "lame", they are better than nothing! As Dawn suggested we
'stole'/modified/extended the notion of a simple, single level
association into something that supports >100 levels of nesting, and in
her example provide a "primative" (subroutine) function that will
remove all related values & associations for, say an "emails"
association.

Whilst I appreciate that we have been given rope, it is perhaps
unfortunate that we had such a wide choice of knots and trees!
Personally I think that a little more rigour in the environment would
have been useful, even if it was by way of (yet another) option or
correlative buried into the system that COULD have been turned on.

Virtually every "4GL" that I'm aware of for multi-value has had to
devote resources to filling in these gaps ... again, and again, and
again.

Spilt milk now, and I'm all out of tears! With all of the latent
"power" of the dictionaries in the "correlative database" environment
we call multi-valued, it is perhaps unfortunate that Basic wasn't
enhanced to harness some of this power as well (D3 ended up getting
some extensions, but I think to little, to late, and no documentation)

Historically everyone has been reluctant to embark on change because of
the "installed base" - yet if you look at the changes that have been
"forced" upon developers in recent years in the Microsoft world using
VB (from say 3 through 6, and now .NET 1 & 2) we can see that people
WILL (albiet reluctantly) adopt change.

DO you have any idea how often questions about DOS 6 crop up in the
Microsft forums? Yet here we find people time warped with technology
that pre-dates this --> I mean we still use R83 as a base-line ?!?

On the one hand, it is a testimony to the underlying technology that
some of these ancient systems still run. It is also one of the most
fundamental problems our market faces, because soooo many people think
that it isn't broken, the users are conditioned to not pay "real
money", and the Database Vendors appear to have forgotten how to
evangalize & innovate & champion their products.

Hmmm,late at night, way OT and beginning to ramble .... time for a
snooze (dare I say I need a cat nap 'cause later today we start 2 new
uni-grads on their journey of discovery, and expect they will have
their first GUI, web-deployable multi-valued screens working before the
end of their first working day. Nothing like giving them a feeling of
REAL accomplishment after they have spent 4 years learning JAVA :-)




Reply With Quote
  #12  
Old   
dawn
 
Posts: n/a

Default Re: Very ignorant question - 01-15-2006 , 01:12 PM







Ross Ferris wrote:
Quote:
IIRC you need to use the d;c structures to make exploding sorts work
(BOM type stuff - oh no, wait, that's the "V" correlative on the data
portion of the file ...sheesh!)

Whilst "lame", they are better than nothing! As Dawn suggested we
'stole'/modified/extended the notion of a simple, single level
association into something that supports >100 levels of nesting, and in
her example provide a "primative" (subroutine) function that will
remove all related values & associations for, say an "emails"
association.

Whilst I appreciate that we have been given rope, it is perhaps
unfortunate that we had such a wide choice of knots and trees!
Personally I think that a little more rigour in the environment would
have been useful, even if it was by way of (yet another) option or
correlative buried into the system that COULD have been turned on.

Virtually every "4GL" that I'm aware of for multi-value has had to
devote resources to filling in these gaps ... again, and again, and
again.
Yes. It seems no matter what tool you select, there are routines that
developers will do repeatedly. Java has both a good means and a
culture of sharing libraries (along with the usual not-invented-here
thinking too). There doesn't seem to be as much library sharing in the
MV world. People use tools to generate code, but I don't see a lot of
using other people's libraries as building blocks. Is that because the
language is procedural or the culture is too competitive or what? I do
see code examples here and on u2-users and there are a few tools like
DOWNLOAD (for U2 only), but not freely shared libraries with solid
API's that I have seen.

Quote:
Spilt milk now, and I'm all out of tears!
poor baby

Quote:
With all of the latent
"power" of the dictionaries in the "correlative database" environment
we call multi-valued, it is perhaps unfortunate that Basic wasn't
enhanced to harness some of this power as well (D3 ended up getting
some extensions, but I think to little, to late, and no documentation)
Someone on cdt suggested it sounded like late-binding. I think it is
more like no-binding.

Quote:
Historically everyone has been reluctant to embark on change because of
the "installed base" - yet if you look at the changes that have been
"forced" upon developers in recent years in the Microsoft world using
VB (from say 3 through 6, and now .NET 1 & 2) we can see that people
WILL (albiet reluctantly) adopt change.
Microsoft has a power where few others could get away with such a
approach. I'd like to see build up around the product, perhaps with
some good libraries, without harming the installed base. Make new
friends, but keep the old.

Quote:
DO you have any idea how often questions about DOS 6 crop up in the
Microsft forums? Yet here we find people time warped with technology
that pre-dates this --> I mean we still use R83 as a base-line ?!?
Yup. I used to think it should be relegated to the trash heap. Then I
saw how much money my budget saved by using it.

Quote:
On the one hand, it is a testimony to the underlying technology that
some of these ancient systems still run. It is also one of the most
fundamental problems our market faces, because soooo many people think
that it isn't broken, the users are conditioned to not pay "real
money", and the Database Vendors appear to have forgotten how to
evangalize & innovate & champion their product.
You need time and money to market a product (although some creative
approaches might be in order) but it sure seems like it would be a good
investment. I was very disappointed that IBM did not start overt
marketing campaigns. It will be interesting to see if InterSystems
treats their MV product like they treat their MUMPS product or whether
it will seem more like MV compared to DB2.

Quote:
Hmmm,late at night, way OT and beginning to ramble .... time for a
snooze (dare I say I need a cat nap 'cause later today we start 2 new
uni-grads on their journey of discovery, and expect they will have
their first GUI, web-deployable multi-valued screens working before the
end of their first working day. Nothing like giving them a feeling of
REAL accomplishment after they have spent 4 years learning JAVA :-)
It is starting to seem to me that Java is so last year (still good to
teach to college students, however). The scripting languages are
starting to rule the day: JavaScript, PHP, Python, Ruby, and maybe even
Perl. This seeming backwards move from OO to procedural/functional
code will correspond to another seeminglybackwards move--from the RM to
more agile database environments, I predict.

cheers! --dawn



Reply With Quote
  #13  
Old   
Tony Gravagno
 
Posts: n/a

Default Re: Very ignorant question - 01-15-2006 , 03:27 PM



"dawn" wrote:
Quote:
RI, in general, is an issue for Pick with one extremely important
exception--entity/property relationships where the properties are
multivalued. Since I'm not in marketing for any MV company, I don't
have to try to claim that it is good to have all RI specified
repeatedly in applications.
While 99% of apps probably do associated MV set maintenance repeatedly
with different code segments that require independent maintenance, we
have to acknowledge that this is by habit, not a system limitation.
Developers familiar with OO will refactor out code like this into a
file-specific module, perhaps even a general purpose module that
handles associated MV's or file updates for a number of files. We can
do this with MV too. For example:

UTIL.ITEM = MY.ORDER
UTIL.VAL = CURRENT.LINE.ITEM.VAL
CALL UTIL.ORDERS.REMOVE.LINE.ITEM
IF UTIL.ERR THEN
GOSUB HANDLE.ERROR.REMOVE.LINE.ITEM
RETURN
END
MY.ORDER = UTIL.ITEM
....

That one utility knows to remove the specified value from whatever
attributes are required, including perhaps deleting corresponding
detail records from related files. Use of common or params on the
call is app-specific, as well as the choice of using a Call vs
Include. It's critical that the app code be able to handle errors
that could be returned from such calls - Most MV code I see these days
assumes everything is OK if we don't fall into debug.

The same pattern can be applied to all file updates:

GOSUB FILE.ORDER
IF FILE.ERR THEN
GOSUB HANDLE.ERROR.FILE.ORDER
END
RETURN
FILE.ORDER: *
UTIL.ITEM = MY.ORDER
CALL UTIL.ORDERS.FILE
* On success, order is filed with no error
* On failure some UTIL var provides info for the error handler
RETURN

In addition to much better maintainability and significant decrease in
the number of places where errors can occur, using patterns like this
removes a lot of RI issues.
- It allows the MV developer to assert that all such updates are
performed by a single Stored Procedure rather than leaving RI to the
DBMS.
- We get the benefit of doing it ourselves as well as refuting a
relational theorist's claim that doing it ourselves is problematic.
- They can still complain the task is left to the app developer rather
than the DBA, but we can respond that we don't need a DBA to
administer the platform because the app developer has full control
over the exact same single RI routine that a DBA would.

I think we don't see patterns like this in MV because the average MV
developer is a business person who happens to know how to code, not a
trained programmer who has learned business skills. Writing modular
code is a learned behavior and there isn't a lot of time to learn such
things when you're busy dumping new features into an app.

What I'm getting at is that I don't see RI as being a Pick-issue
per-se, just because it's not built into the environment. I see it as
a matter of proper use of the tools we have, and yeah, if 99% of Pick
people insist on duplicating file update code all over their app then
it's fair to say a properly developed relational environment will beat
a Pick app 99% of the time.


Quote:
When I weigh the options I would prefer we
start with MV and fix such issues (which any site can do by writing
wrapper I-O routines as you have likely done in Visage).

Ross Ferris wrote:
Many tools (like Visage) will do this sort of thing automatically for you
... in Basic this must be done by the application programmer.

Or by the I-O library developer, would might also be the app
programmer, the DBA, the systems analyst, the documentation writer, and
the QA team (but that's another story).
This is exactly what I'm talking about above. For a new application,
leaving RI (file IO and management of multivalues) to a tool is fine -
DesignBais, OSMOSiS, Nucleus, and SB+ also do this. In order to use
one of these tools with an existing application, the existing data
management code needs to be properly modularized. Well, if good code
is already properly modularized, then you don't "need" to replace it
with a tool. In order to avoid irrevocably linking their apps into a
third-party tool, some companies buy the tools and then completely
ignore the data management capabilities, using only the UI features.
That's a valid business/technical decision.

Quote:
In
all cases developers are given the "flexibility" of NOT maintaining
this information (and unfortunately this tends to be the case!! One of
the biggest strengths of the mv paradigm is its flexibilty. One of the
biggest weaknesses of the mv paradgm is its flexibility)
yup

T


Reply With Quote
  #14  
Old   
Ross Ferris
 
Posts: n/a

Default Re: Very ignorant question - 01-15-2006 , 08:06 PM



Random answers & thoughts :

Intersystems/Cache - they will not treat (or promote) mv "differently".
They already promote their (truely) multi-dimensional database, and I
believe that mv will just be another "face" to this, like their SQL and
object support


Code Re-use/Libraries - there certainly is a dirth in terms of
freeare/public domain. Initiatives like PickSource, and a poorly
advertised area of RD's FTP site were as close as we got. That said,
there are plenty of commercial solutions available to most problems,
wether complete "environments" like Visage, or a grab-bag of useful
goodies to virtually anything from Dave Weaver. However, whereas a
"Windows" developer will buy an ActiveX our niche tends to be more
inclined to "roll our own"

As a case in point, we offered to GIVE Pick Systems the routines we
used to ship updates of R5 out to clients, in the hope that we could
help provide the mv equivalent of a "setup.exe". The result was
predictable, and as a result, every software house still has their own
(incompatible, though understandable) way of doing basic tasks like
this



Patterns (code repitition) - I think that what we have done on this
front within Visage (Snippet Technology and Active Code Reduction
Initiative) is really neat here, and isn't tied to a particular
language (can be used with HTML, Javascript & Java at least).

In terms of API's, what about UniObjects? or the AccuTerm host
programs? As I said, the API's tend to be tied to commercial products,
though I do note some initiatives within the U2 camp of late.

However, if you look at products like SB+ or Visage there IS a well
known & published API. (And there are always a wealth of programs to
look at in system accounts like APP.PROGS in UV or DM,BP, in D3)


Reply With Quote
  #15  
Old   
frosty
 
Posts: n/a

Default Re: Very ignorant question - 01-16-2006 , 02:24 PM



dawn wrote:
Quote:
OK, now you get to see how little I know. I have been working on the
business intelligence side of the house (data retrieval) and/or
management since the mid-80's. Before that I was a COBOL CICS IMS
developer. So, I've never been a DataBASIC programmer. I do have
manuals and also Jon Sisk's book on BASIC, but I'm feeling lazy while
watching skating on TV (prompting the husband to head to the other
room to watch football) and most of you can answer this before the
next down.
[snip]
They have downs in skating?!? Maybe I should start watching! =`;^>

--
frosty




Reply With Quote
  #16  
Old   
B Faux
 
Posts: n/a

Default Re: Very ignorant question - 01-16-2006 , 03:09 PM




"frosty" <frostyj (AT) bogus (DOT) tld> wrote

Quote:
dawn wrote:
OK, now you get to see how little I know. I have been working on the
business intelligence side of the house (data retrieval) and/or
management since the mid-80's. Before that I was a COBOL CICS IMS
developer. So, I've never been a DataBASIC programmer. I do have
manuals and also Jon Sisk's book on BASIC, but I'm feeling lazy while
watching skating on TV (prompting the husband to head to the other
room to watch football) and most of you can answer this before the
next down.
[snip]
They have downs in skating?!? Maybe I should start watching! =`;^

--
frosty

Illegal use of hands should be interesting too!

BFaux-




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.