Re: Hello again

2006-05-15 Thread Sam Vilain
Darren Duncan wrote:

1.  One effort, as seen to some degree on perl6-language@perl.org and 
#perl6 @ chat.freenode.net, is to improve and/or adapt the data types 
and operators built into Perl 6 itself so that you can easily do 
natively in Perl 6 the same sorts of things that you would do with a 
separate relational database product.

This centers on one being able to use and/or easily create Perl 6 
Roles for things like Tuples and Relations, that a relational 
database is founded on, as well as associated operators like 
project(), restrict(), extend(), join(), summarize(), union(), 
difference(), group(), rename(), and so on.  Such as these are the 
building blocks of all types of RDBMS select queries and DML.

Done properly, an in-RAM relational database can be on one hand just 
as simple to use as in memory hashes or arrays, or a usual persistent 
one could be as easy to use as DBM tied hashes.  Since you're doing 
this in Perl itself, there is no impedence mismatch at all, and you 
can use all your Perl classes and operators directly with your data.
  


While I think this is probably out of scope for a new DBI, all the
coolest languages are doing this.

Eg, AllegroCache for LISP:

http://www.franz.com/products/allegrocache/

Another is Erlang's mnesia

http://www.erlang.se/doc/doc-5.0.1/lib/mnesia-3.9.2/doc/

If you look at the Pugs repository, I'm making a prototype of desired 
functionality / interface in the ext/Relation/ subdirectory.

2.  My other effort is my Perl implemented Rosetta DBMS, which is 
more arms length in that using it is like using a typical database is 
through DBI, but that it parses its own queries and utilizes 
swappable back-ends, whose native language (usually SQL) it 
translates its queries to.  Rosetta works like a traditional DBMS you 
access through DBI, but that it typically uses other DBMSs behind the 
scenes, giving you database language portability between them.  This 
in-progress work is on CPAN as its own distro.

3.  Now, neither of my two efforts are the same as the current DBI in 
which you write queries in the native dialect of the back end store 
and it just passes them through.  I assume that this dbi2 or dbdi 
group still plans to deliver such a thing when the time is right, 
since users like things that are familiar.

4.  For people that want to help where something will have the 
greatest impact, I suggest exploring ways that DBMS functionality can 
occur directly in Perl 6 itself, as I see that is where a true 
innovation and usefulness lies.

-- Darren Duncan
  




Re: Hello again

2006-05-13 Thread Darren Duncan
At 4:34 PM -0500 5/13/06, Jonathan Scott Duff ([EMAIL PROTECTED]) wrote 
(on dbdi-dev@perl.org):

Apparently it's my lot in life to think about dbdi once a year
as it was almost exactly 1 year ago that I asked the following:

1. Is this list alive?
2. Is anyone working on the dbdi?

So, consider this my annual ping on the subject. Only now I've got a
third question:

3. What can your average programmer-type person do to help?

I understand that parrot maturity was a a bit of a problem before, but
maybe it's far enough along now that isn't a problem?


I don't know whether it was meant to replace dbdi-dev@perl.org or 
not, but there is a newer dbi2-dev@perl.org list now that you may 
want to check out.


That said, it has next to no traffic as well; waiting for something, I presume.

While I am on both of these lists, I am currently putting most of my 
personal efforts behind 2 much more radical solutions to the same 
general problem that DBI addresses.  Said 2 solutions are largely 
orthogonal to each other.


1.  One effort, as seen to some degree on perl6-language@perl.org and 
#perl6 @ chat.freenode.net, is to improve and/or adapt the data types 
and operators built into Perl 6 itself so that you can easily do 
natively in Perl 6 the same sorts of things that you would do with a 
separate relational database product.


This centers on one being able to use and/or easily create Perl 6 
Roles for things like Tuples and Relations, that a relational 
database is founded on, as well as associated operators like 
project(), restrict(), extend(), join(), summarize(), union(), 
difference(), group(), rename(), and so on.  Such as these are the 
building blocks of all types of RDBMS select queries and DML.


Done properly, an in-RAM relational database can be on one hand just 
as simple to use as in memory hashes or arrays, or a usual persistent 
one could be as easy to use as DBM tied hashes.  Since you're doing 
this in Perl itself, there is no impedence mismatch at all, and you 
can use all your Perl classes and operators directly with your data.


If you look at the Pugs repository, I'm making a prototype of desired 
functionality / interface in the ext/Relation/ subdirectory.


2.  My other effort is my Perl implemented Rosetta DBMS, which is 
more arms length in that using it is like using a typical database is 
through DBI, but that it parses its own queries and utilizes 
swappable back-ends, whose native language (usually SQL) it 
translates its queries to.  Rosetta works like a traditional DBMS you 
access through DBI, but that it typically uses other DBMSs behind the 
scenes, giving you database language portability between them.  This 
in-progress work is on CPAN as its own distro.


3.  Now, neither of my two efforts are the same as the current DBI in 
which you write queries in the native dialect of the back end store 
and it just passes them through.  I assume that this dbi2 or dbdi 
group still plans to deliver such a thing when the time is right, 
since users like things that are familiar.


4.  For people that want to help where something will have the 
greatest impact, I suggest exploring ways that DBMS functionality can 
occur directly in Perl 6 itself, as I see that is where a true 
innovation and usefulness lies.


-- Darren Duncan