Hello Guys!
Few days i am walking around with one question in my head. How to make persistence for my financial reporting system done in visual works with the latest seaside. Now it stores all its data in image, but i want to run another one with a "playground". So i need transfer data. I also need some good backup for my data. Just take a look at m y data sizes: 1) Schemas and descriptions costs really nothing 2) Main size is from reports: Each period has 45 reports, each report has about 500 records. Sometimes we also have a budget period and forecast. So per year we have: 12*45*500 = 270000 decimal numbers. Guys what do you recommend for me? Boris, i've read that you have your own minimalistic ORM. Can you help me with it? And first of all i need persistence for backup and data transfer, for current task one VM is enough. So solution may be used only to load and save data. Cheers, Oleg _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Oleg,
You might be the perfect candidate to look at what Cincom folks are doing with their Seaside + GLORP efforts for upcoming releases by joining vw-dev mailing list if you aren't already on it; see http://parcplace.net for details. Quoting: http://tinyurl.com/2ltn6s "We see the enthusiasm surrounding Seaside, and have gotten a lot of questions about what we plan to do with the Cincom Smalltalk port of Seaside. We plan to support Seaside, and that support will include a relational persistence solution." Michael, do you have any idea how usable GLORP's ActiveRecord might be by now for simple use cases like Oleg's? Thanks! -Boris -- +1.604.689.0322 DeepCove Labs Ltd. 4th floor 595 Howe Street Vancouver, Canada V6C 2T5 http://tinyurl.com/r7uw4 [hidden email] CONFIDENTIALITY NOTICE This email is intended only for the persons named in the message header. Unless otherwise indicated, it contains information that is private and confidential. If you have received it in error, please notify the sender and delete the entire message including any attachments. Thank you. > -----Original Message----- > From: [hidden email] [mailto:seaside- > [hidden email]] On Behalf Of Oleg Richards > Sent: Tuesday, December 11, 2007 1:18 PM > To: [hidden email] > Subject: [Seaside] Persistence in VW > > Hello Guys! > > Few days i am walking around with one question in my head. How to > make persistence for my financial reporting system done in visual > works with the latest seaside. Now it stores all its data in image, > but i want to run another one with a "playground". So i need transfer > data. I also need some good backup for my data. Just take a look at m > y data sizes: > > 1) Schemas and descriptions costs really nothing > 2) Main size is from reports: Each period has 45 reports, each report > has about 500 records. Sometimes we also have a budget period and > forecast. So per year we have: 12*45*500 = 270000 decimal numbers. > > Guys what do you recommend for me? Boris, i've read that you have > your own minimalistic ORM. Can you help me with it? > > And first of all i need persistence for backup and data transfer, for > current task one VM is enough. So solution may be used only to load > and save data. > > > Cheers, Oleg > _______________________________________________ > 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 |
> Michael, do you have any idea how usable GLORP's ActiveRecord might be > by now for simple use cases like Oleg's? > Yeah I think it'd be fine with that - and if it cannot automatically represent the models the way Oleg wants, he can build custom descriptors to map it the way he wants too using regular Glorp. Oleg, jump in the water is fine :) Cheers, Michael _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Hello Boris and Michael!
Thanks for your advises. I want to ask for a few more questions: I have a lot of inheritance: Template - Flow template; different kind of rows; reconciliated report. How will they work? Currently i am storing all data in class side dictionaries and a lot of binding was done with dictionaries too. Can i keep them or i should remake bindings for the relation needs through ids. Should i keep my dictionaries or i should make afinders un database in place of them? And main problem: I have a report object which stores a values in hash where the row code (3 letter) is a key and money amount is a value. How can i store this in db using glorp? I dont have special class for it, so how to do mapping? Can u show me example? Boris are you using ActiveRecord and GLORP too? Oleg |
In reply to this post by Oleg Richards
No, we have our own db mapping framework at the core of our application. With GLORP there is quite a bit of flexibility as far as your mapping is concerned, but it has relational db as the store, so you would need to be familiar with it somewhat. Other options are gemstone, boss files or xml :) _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Boris!
What about my other questions (inheritance, integer storage)? Can you recommend me something? Oleg
|
Inheritance is always rather tricky against a relational
database, because the concept really isn't there, so you have to map it
into some compromise, trading off space, query time, and flexibility.
Glorp supports two different strategies for this, which we call
horizontal and filtered. Filtered inheritance means all instances are
stored in one bit table, and there's a field which indicates which type
this row represents. This is efficient to query, but wastes spaces.
Horizontal is where each subclass is represented by an entirely separate
table. This is more likely if you're trying to impose an inheritance
hierarchy on an existing database, and minimizes storage, but makes
querying more complex. Some kinds of queries can be inefficient. You'd
want to look at the TypeResolver class and its subclasses. In the Glorp
tests, GlorpInheritanceDescriptorSystem has some examples.
By comparison, storing integers and dictionaries is pretty easy :-) If you want both key and value to be simple types, then you need a table somewhere to store them. If the value is an object, you can either have the key be part of the value's table, or in a link table. GlorpDictionaryMappingTest and GlorpEncyclopediaDescriptorSystem have examples. Neither of those things is likely to work automatically with the GlorpActiveRecord code, you'll likely have to write out the mappings. But part of the point of the way GlorpActiveRecord is done is that you can let the parts that are easy get built automatically and only have to specify the tricky parts. At 06:01 AM 12/12/2007, Oleg Richards wrote: Boris! --
Alan Knight [|], Cincom Smalltalk Development
_______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Thank you Alan!
I will look at this classes. I need a little help with ActiveRecord? Can you show me how to use it? I understand that i should inherit all my models from AR class, but what next. Should i execute something in workspace? And how to attach session to active record?
|
Sure. It should (hopefully) be fairly easy to use, although
if you're completely new to Glorp it probably can get
interesting.
Subclass your classes from ActiveRecord. Then use ActiveRecordDescriptorSystem, or your own subclass of it, as the system, and log in. If you use the main class, it'll try to use all subclasses of ActiveRecord. If you make your own subclass you can implement #defaultRootClass to make it just be subclasses of your own abstract superclass (which it expects to be a subclass of ActiveRecord). If you've named your classes according to the generally Ruby on Rails-ish conventions, which is to say that the Customer class corresponds to the CUSTOMERS table (or the CUSTOMER table, it's not all that fussy), then it should try to generate descriptors for that automatically. It'll do a good deal better if your foreign key fields are identified as such in the database. For parts that it doesn't get right, or at all, you can implement the normal Glorp methods like #descriptorForMyClassName:, but you should only have to give it the information for the mappings it didn't get right in the first place. There are some simple examples in the GlorpActiveRecordTests package. Once it's mapped, then you can do a number of things by sending messages to the objects or their classes that would typically require you to use the Glorp session. e.g. aClass findWhere:, anObject save, etc. At 12:57 PM 12/12/2007, Oleg Richards wrote: Thank you Alan! --
Alan Knight [|], Cincom Smalltalk Development
_______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Thank you! I will give it try. Can you explain me how to deal with logins? I ve read articlr from Ramon about glorp sessions pool. But its for seaside and i am interested in workspace or in global variable. Should i create tables first? Or activerecord wil create them? |
If you guys using VW really dont have a viable OODBMS persistence option
to offer perhaps you might consider porting Magma. From what I know of the code I doubt if there is anything particularly squeak-centric. Magma has to be easier to port than Seaside, since it doesnt use any complicated stuff like continuations. just a thought Keith _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
I think somebody somewhere must have done an ODBMS that
works with VisualWorks. Maybe Dale's heard of something :-)
At 04:59 PM 12/13/2007, Keith Hodges wrote: If you guys using VW really dont have a viable OODBMS persistence option --
Alan Knight [|], Cincom Smalltalk Development
_______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by keith1y
A large number of our customers use the combination of VW and GemStone
for persistence. The product GemBuilder for Smalltalk (GBS) runs inside of a VW (or VA) image and provides connectivity to a GemStone data base. So technically VW does have a pretty good OODB-based persistence option. Take a look at http://seaside.gemstone.com/docs/Announcement-ESUG2007.htm where we describe GemStone/S LE which provides persistence for VW, the main difference between GemStone/S LE and GemStone/S Web Edition (GLASS) is that GemStone/S LE is not free. Dale Keith Hodges wrote: >If you guys using VW really dont have a viable OODBMS persistence option >to offer perhaps you might consider porting Magma. From what I know of >the code I doubt if there is anything particularly squeak-centric. Magma >has to be easier to port than Seaside, since it doesnt use any >complicated stuff like continuations. > >just a thought > >Keith > > >_______________________________________________ >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 |
Dale Henrichs wrote:
> A large number of our customers use the combination of VW and GemStone > for persistence. The product GemBuilder for Smalltalk (GBS) runs > inside of a VW (or VA) image and provides connectivity to a GemStone > data base. > > So technically VW does have a pretty good OODB-based persistence option. > > Take a look at > http://seaside.gemstone.com/docs/Announcement-ESUG2007.htm where we > describe GemStone/S LE which provides persistence for VW, the main > difference between GemStone/S LE and GemStone/S Web Edition (GLASS) is > that GemStone/S LE is not free. Okay, okay, you get value for your money --- VW, VA support, Solaris/AIX/HP, 2 CPUS, 8X larger repository, 2X shared page cache, and technical support--- but hey other than that they're the same:)... (still suffering from head cold), Dale _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by keith1y
Since my projects are very small I use OmniBase which works fine with
Seaside and VW. On Dec 13, 2007, at 3:59 PM, Keith Hodges wrote: > If you guys using VW really dont have a viable OODBMS persistence > option > to offer perhaps you might consider porting Magma. From what I know of > the code I doubt if there is anything particularly squeak-centric. > Magma > has to be easier to port than Seaside, since it doesnt use any > complicated stuff like continuations. > > just a thought > > Keith > > > _______________________________________________ > seaside mailing list > [hidden email] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > ---- Roger Whitney Department of Computer Science [hidden email] San Diego State University http://www.eli.sdsu.edu/ San Diego, CA 92182-7720 _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Dale
Dale!
One question: VW will just connect to GemStone via gembuilder/s. If i'm using a Seaside for my interfaces, why should i use VW? :) Oleg
|
Oleg,
For a greenfield Seaside application you have a good point ... If you are using the Smalltalk GUI heavily (as nearly all of our customers do) or if you are depending upon the VW class library, then GBS is still a very good solution for persistence. Dale Oleg Richards wrote: >Dale! > >One question: VW will just connect to GemStone via gembuilder/s. If i'm >using a Seaside for my interfaces, why should i use VW? :) > >Oleg > > >Dale Henrichs wrote: > > >>Dale Henrichs wrote: >> >> >> >>>A large number of our customers use the combination of VW and GemStone >>>for persistence. The product GemBuilder for Smalltalk (GBS) runs >>>inside of a VW (or VA) image and provides connectivity to a GemStone >>>data base. >>> >>>So technically VW does have a pretty good OODB-based persistence option. >>> >>>Take a look at >>>http://seaside.gemstone.com/docs/Announcement-ESUG2007.htm where we >>>describe GemStone/S LE which provides persistence for VW, the main >>>difference between GemStone/S LE and GemStone/S Web Edition (GLASS) is >>>that GemStone/S LE is not free. >>> >>> >>Okay, okay, you get value for your money --- VW, VA support, >>Solaris/AIX/HP, 2 CPUS, 8X larger repository, 2X shared page cache, and >>technical support--- but hey other than that they're the same:)... >> >>(still suffering from head cold), >> >>Dale >>_______________________________________________ >>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 |
Free forum by Nabble | Edit this page |