Goods

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Goods

Dirk Vleugels
Hi,

sorry if this is OT.

i installed Goods (80) from SqueakMap. The SUnit tests failed in below method:

KKDefaultConnection >> defaultLogin
        ^ 'squeak', (Time millisecondClockValue hex allButFirst: 3)

i added asFloat (float respondsTo: hex), but now im unsure if i missed
some dependency package (which might change SmallInteger?). I'm
running a 3.9b-7052 image.

After the change all tests pass.

Different question: anyone using GOODS in production? How does it
compare to Magma? If i read the documentation correctly it should be
possible work with classes/objects stored in goods with either c++,
smalltalk, java, etc.?

Curious,
Dirk
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Goods

cdavidshaffer
Dirk Vleugels wrote:

> Hi,
>
> sorry if this is OT.
>
> i installed Goods (80) from SqueakMap. The SUnit tests failed in below
> method:
>
> KKDefaultConnection >> defaultLogin
>     ^ 'squeak', (Time millisecondClockValue hex allButFirst: 3)
>
> i added asFloat (float respondsTo: hex), but now im unsure if i missed
> some dependency package (which might change SmallInteger?). I'm
> running a 3.9b-7052 image.

I haven't yet used GOODS under Squeak3.9 but I'd suggest that you change
this to:

KKDefaultConnection >> defaultLogin
    ^ 'squeak', Time millisecondClockValue printStringHex


>
> After the change all tests pass.
>
> Different question: anyone using GOODS in production? How does it
> compare to Magma? If i read the documentation correctly it should be
> possible work with classes/objects stored in goods with either c++,
> smalltalk, java, etc.?


I have several systems which use GOODS in production in various forms
(ranging from somewhat batch-style to interactive use).  I am also
working with a client who is planning to release a GOODS-based system.
I cannot compare it to Magma (never used Magma) but I can point out some
issues:

1) commit/rollback performance can be poor if your caches are large
(large numbers of objects loaded).  If you load the latest development
version from SqueakSource you will get some improvement but it still
effectively scales linearly with the size of this cache.

2) Avi's WriteBarrier (on SqueakMap) was an attempt to avoid problem
#1.  The latest development release doesn't support WriteBarrier so I'd
recommend that you try both combinations (current release of GOODS
client + WriteBarrier) or (development releast of GOODS client without
WriteBarrier)..

3) There is no direct support for "indexing" so you have to do it
manually with BTree's (Avi has BTree package on SqueakMap), Dictionaries
or whatever datastructure suits your searching needs.  FWIW I believe
that Magma has significant support for automatic indexing.

4) You can, in principle, access your database from C++, Java etc but
you must provide more type information.  The GOODS wiki page details
this:  http://minnow.cc.gatech.edu/squeak/3494

Hope this helps,

David

_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Goods

Ramiro Diaz Trepat
It's been some time since the ODBs have been talked about in this list.
It would be great to hear current experiences (with the latest  
versions) that people had.  The good and the bad.
In my case, I don't have a lot of volume yet, but my experiences were:

Magma
======

Good:
        New cool query syntax (no one else has this).
        Excellent support from Chris Müller and list.
        Clean syntax
        Indexes for various classes (Dates, Strings, Numbers, etc.)
        ReadStrategies
        Native Smalltalk
        Integration package to use with Seaside.
Bad:
        Hard to set up (the latest beta version with queries at least)
        Insert & update performance (inserting  ~260 items on a magma  
collection takes >30'' on a single commit)
       


GOODS
======

Good:
        Very simple to set up
        Cleanest / less intrusive syntax of all ODBs I've seen
        Pretty fast on inserts (on my not so large data sets at least)
        Distributable / multi-language
Bad:
        Maintained by a single guy (I'm always scared of this... what if he  
decides to run a restaurant?)
        Not native Smalltalk
        No indexes (must use Avi's BTree)
        No queries


OmniBase
========
Good:
        Seems to have been widely tested in several smalltalks
Bad:
        Locking problem on Macs and Linux with Squeak has not been resolved.  
Hence, if you use Squeak, Windows is the only alternative.  I've  
tested it yesterday on my Mac and the locking issues were still  
there.  I don't know if it is still this way under Linux.
        Ugliest syntax (for me, at least)
        No query language.
        Licencing? (don't really know about this)


But it would be great, at least for me, to hear what others been  
through when they decided to implement an ODB.
Thanks


r.



_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Goods

Philippe Marschall
> GOODS
> Bad:
         must be compiled with GCC 2. Compiles on GCC 3 but will crash
on big datasets. Does not compile on GCC 4. I find such issues always
reassuring.

I don't want to dis GOODS. I think it's cool for small datasets.

Philippe
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Goods

Chris Muller
In reply to this post by Dirk Vleugels
I would just like to clarify, the Magma set up is "one-click" and
always has been.  Ramiro was describing his experience loading the
"queries beta" version a couple of weeks ago, which was not one-click.
That version was finished and announced last week, it is no longer in
beta, is therefore now a one-click install.

I would also like to clarify the performance comment.  Ramiro, I
profiled your

  NYSE instance getValuesFor: 'aapl' from: ('1/1/2004' asDate) to:
('1/1/2006' asDate)

which addeds 504 objects and would like to clarify a couple of points
about the 33 second profile:

  - 5.4 seconds was spent getting the data from Yahoo
  - 18.1 seconds spent doing 504 queries on the MagmaSet to determine
if the object being added already exists.  (NOTE 6 of which in
DateAndTime>>#asUTC).
  - 10 seconds for the actual commit

MagmaSets are expensive to add to, because every object requires it to
query to see if that object already exists.  You could use a
MagmaCollection here and would see the time cut in half, 5.4 seconds
for Yahoo and 10 seconds for the commmit.

This is why I cringe at public declarations about performance.  One
persons 260 objects is different than anothers.  I think the only
meaningful way to describe or compare performance is with 1)
well-explained execution contexts (hardware, etc.), 2) detailed
descriptions of the task being measured, and 3) what performance-tuning
considerations (which, in Magma's case, can have a 10X improvement)
were done.

MagmaBenchmarker attempts to address these items:

  1) the execution context includes computer, cpu, speed, memory, and
disk
  2) the benchmarking methods names are descriptive in what they do
  3) the implementation of the methods can be examined to see what
performance tuning mechanisms were used, if any

To see this output for the latest Magma:

  http://minnow.cc.gatech.edu/squeak/5606

I certainly don't want to proclaim Magma is blazing fast, but the
MagmaBenchmarker on the current version just demonstrated, on my circa
2004 laptop, insertion of 1000 objects (100 at a time, 10 commits) into
a MagmaCollection in 4 seconds flat (5 without WriteBarrier).

Understanding performance requires context, lots of context..

 - Chris



> Magma
> ======
>
> Good:
> New cool query syntax (no one else has this).
> Excellent support from Chris Müller and list.
> Clean syntax
> Indexes for various classes (Dates, Strings, Numbers, etc.)
> ReadStrategies
> Native Smalltalk
> Integration package to use with Seaside.
> Bad:
> Hard to set up (the latest beta version with queries at least)
> Insert & update performance (inserting  ~260 items on a magma  
> collection takes >30'' on a single commit)
>
>
>
> GOODS
> ======
>
> Good:
> Very simple to set up
> Cleanest / less intrusive syntax of all ODBs I've seen
> Pretty fast on inserts (on my not so large data sets at least)
> Distributable / multi-language
> Bad:
> Maintained by a single guy (I'm always scared of this... what if he
>
> decides to run a restaurant?)
> Not native Smalltalk
> No indexes (must use Avi's BTree)
> No queries
>
>
> OmniBase
> ========
> Good:
> Seems to have been widely tested in several smalltalks
> Bad:
> Locking problem on Macs and Linux with Squeak has not been resolved.
>  
> Hence, if you use Squeak, Windows is the only alternative.  I've  
> tested it yesterday on my Mac and the locking issues were still  
> there.  I don't know if it is still this way under Linux.
> Ugliest syntax (for me, at least)
> No query language.
> Licencing? (don't really know about this)
>
>
> But it would be great, at least for me, to hear what others been  
> through when they decided to implement an ODB.
> Thanks
>
>
> r.

_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Re: Goods

Lukas Renggli
In reply to this post by Ramiro Diaz Trepat
Some corrections:

> OmniBase
> ========
> Good:
>         Seems to have been widely tested in several smalltalks
> Bad:
>         Locking problem on Macs and Linux with Squeak has not been resolved.
> Hence, if you use Squeak, Windows is the only alternative.  I've
> tested it yesterday on my Mac and the locking issues were still
> there.  I don't know if it is still this way under Linux.

There is only a locking problem, if you have multiple Squeak images
accessing the same database from Mac and/or Linux, else it works just
fine.

>         Licencing? (don't really know about this)

It has been open-sourced, all parts including the garbage collector.

Cheers,
Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

[Q] Can I use Magma without Morphic System? (Re: Goods)

Chun, Sungjin
In reply to this post by Chris Muller
Hi,

I'm currently using 3.8 based MVC only image + Seaside. Can I use  
Magma without Morphic System?

Thanks in advance

On Aug 17, 2006, at 2:00 PM, Chris Muller wrote:

> I would just like to clarify, the Magma set up is "one-click" and
> always has been.  Ramiro was describing his experience loading the
> "queries beta" version a couple of weeks ago, which was not one-click.
> That version was finished and announced last week, it is no longer in
> beta, is therefore now a one-click install.
>
> I would also like to clarify the performance comment.  Ramiro, I
> profiled your
>
>   NYSE instance getValuesFor: 'aapl' from: ('1/1/2004' asDate) to:
> ('1/1/2006' asDate)
>
> which addeds 504 objects and would like to clarify a couple of points
> about the 33 second profile:
>
>   - 5.4 seconds was spent getting the data from Yahoo
>   - 18.1 seconds spent doing 504 queries on the MagmaSet to determine
> if the object being added already exists.  (NOTE 6 of which in
> DateAndTime>>#asUTC).
>   - 10 seconds for the actual commit
>
> MagmaSets are expensive to add to, because every object requires it to
> query to see if that object already exists.  You could use a
> MagmaCollection here and would see the time cut in half, 5.4 seconds
> for Yahoo and 10 seconds for the commmit.
>
> This is why I cringe at public declarations about performance.  One
> persons 260 objects is different than anothers.  I think the only
> meaningful way to describe or compare performance is with 1)
> well-explained execution contexts (hardware, etc.), 2) detailed
> descriptions of the task being measured, and 3) what performance-
> tuning
> considerations (which, in Magma's case, can have a 10X improvement)
> were done.
>
> MagmaBenchmarker attempts to address these items:
>
>   1) the execution context includes computer, cpu, speed, memory, and
> disk
>   2) the benchmarking methods names are descriptive in what they do
>   3) the implementation of the methods can be examined to see what
> performance tuning mechanisms were used, if any
>
> To see this output for the latest Magma:
>
>   http://minnow.cc.gatech.edu/squeak/5606
>
> I certainly don't want to proclaim Magma is blazing fast, but the
> MagmaBenchmarker on the current version just demonstrated, on my circa
> 2004 laptop, insertion of 1000 objects (100 at a time, 10 commits)  
> into
> a MagmaCollection in 4 seconds flat (5 without WriteBarrier).
>
> Understanding performance requires context, lots of context..
>
>  - Chris
>
>
>
>> Magma
>> ======
>>
>> Good:
>> New cool query syntax (no one else has this).
>> Excellent support from Chris Müller and list.
>> Clean syntax
>> Indexes for various classes (Dates, Strings, Numbers, etc.)
>> ReadStrategies
>> Native Smalltalk
>> Integration package to use with Seaside.
>> Bad:
>> Hard to set up (the latest beta version with queries at least)
>> Insert & update performance (inserting  ~260 items on a magma
>> collection takes >30'' on a single commit)
>>
>>
>>
>> GOODS
>> ======
>>
>> Good:
>> Very simple to set up
>> Cleanest / less intrusive syntax of all ODBs I've seen
>> Pretty fast on inserts (on my not so large data sets at least)
>> Distributable / multi-language
>> Bad:
>> Maintained by a single guy (I'm always scared of this... what if he
>>
>> decides to run a restaurant?)
>> Not native Smalltalk
>> No indexes (must use Avi's BTree)
>> No queries
>>
>>
>> OmniBase
>> ========
>> Good:
>> Seems to have been widely tested in several smalltalks
>> Bad:
>> Locking problem on Macs and Linux with Squeak has not been resolved.
>>
>> Hence, if you use Squeak, Windows is the only alternative.  I've
>> tested it yesterday on my Mac and the locking issues were still
>> there.  I don't know if it is still this way under Linux.
>> Ugliest syntax (for me, at least)
>> No query language.
>> Licencing? (don't really know about this)
>>
>>
>> But it would be great, at least for me, to hear what others been
>> through when they decided to implement an ODB.
>> Thanks
>>
>>
>> r.
>
> _______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Goods

Ramiro Diaz Trepat
In reply to this post by Chris Muller
Yes, Chris is right on the miss use I did of the MagmaSet.
I will refine and repost whenever I have finer numbers.
But probably I will start using MagmaCollections instead of MagmaSets,
and resolve the uniqueness of the elements outside Magma.  This will
probably help a lot with performance.
The other issue I am having right now is that I was unable to get the
operators ( >= <=) to work properly on the new query system (based on
the #where method).  But I am looking at this issue right now with
Chris, and it might be a problem on my code.


Lukas, regarding OmniBase's locking issue on Mac, whenever I try the
most basic things (like connect on a single machine/image) I get the
warning window about the locking problem, and if I click proceed,
nothing happens.  Maybe I am doning something wrong that you can tell
me about.  I have tried with the OmniBase on SqueakMap, but also with
the releases from SqueakSource.com.
I'm glad it's all open now.


Thanks
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside