GemStone FAQ (v.1.0) 
Author Message
 GemStone FAQ (v.1.0)

Archive-name: databases/GemStone-FAQ
Posting-Frequency: monthly
Last-modified: Oct 26,1997
Version: 1.0
URL: http://www.*-*-*.com/ ~vmalik/gemstone.html

____________________________________________________________________________

GemStone Frequently Asked Questions
Copyright =A9 1994 Vikas Malik
All Rights Reserved

This FAQ may be posted to any USENET newsgroup, on-line service, or BBS
as long as it is posted in its entirety and includes this copyright=
 statement.

This FAQ may not be distributed for financial gain.

This FAQ may not be included in commercial collections or compilations
without express permission from the author.
____________________________________________________________________________


Knowledge Systems Corporation
____________________________________________________________________________

Contents

Q. What is GemStone?=20
Q. How do I spell GemStone?
Q. What is the Stone?
Q. What is a Gem?
Q. What is a Repository?
Q. What is the difference between a linked and RPC application?
Q. What is GemBuilder?
Q. What is GBSM?
Q. How do I log into GemStone programmatically?
Q. What are the two different types of transaction modes in GemStone?
Q. What is a connector?
Q. What are the different kinds of connectors?
Q. What is the difference between a global connector and a session=
 connector?
Q. Do I need to define a connector for every object in my application?
Q. What is a root object?
Q  What is a symbol list?
Q. What are the names of default symbol dictionaries of a GemStone user?
Q. How do I invoke a de{*filter*} in GemStone?
Q. What is the difference between the terms faulting and flushing?
Q. How do I remotely excute code in GemStone from Smalltalk side?
Q. What is a forwarder?
Q. How do I create a forwarder?
Q. What is the difference in results of sending the following messages to a=
=20
forwarder?
        aGSForwarder   name    and   aGSForwarder   fwname
Q. What is a replicate?
Q. What is a stub?
Q. How do I control the number of levels to replicate when updating an=
 object=20
from GemStone to Smalltalk?
Q. How do I unstub a stub?
Q. Can I pass a stub as an argument to a primitive method?
Q. How do I ensure that an object is never replicated to contain a stub down=
 to=20
a certain level?
Q. How do I convert a replicate into a stub?
Q. What is the result of sending a message to a stub?
Q. What is the difference between lazy and immediate fault policy?
Q. What do I mean by class history of a GemStone class?
Q. How do I remove a version of GemStone class?
Q. How do I find the latest version of a GemStone class?
Q. How do I migrate all the instances of a class to its latest version?
Q. How do I remove all the old versions of a class?
Q. What is the difference between the results of sending #asLocalObject and=
=20
#asLocalObjectCopy messages to  aGSObject?
Q. How do I mark a Smalltalk object as dirty?
Q. How do I mark objects dirty automatically without sending #markDirty in=
=20
setter methods?

Q. What is GemStone?
Ans. GemStone is an Object- Oriented database.

Q. How do I spell GemStone?
Ans. GemStone is always spelled with upper case S. Some smart recruiters=
 will=20
look for upper case S in your resume.

Q. What is the Stone?
Ans. The stone process handles locking and concurrent access to objects in=
 the=20
repository. Each repository is monitored by a single stone.

Q. What is a Gem?
Ans. Gem is the object server for user application. The Gem reads the
repository=20
as the application accesses objects, and it updates the repository when an
application=20
commits a transaction. A repository can have more than one Gem process.

Q. What is a Repository?
Ans. Repository stores GemStone classes and persistent objects.

Q. What is the difference between a linked and RPC application?
Ans. In a linked application, Gem is integarted with the application into a
single=20
process whereas in a RPC application, Gem runs as a separate process and
responds=20
to RPCs from the application.

Q. What is GemBuilder?
Ans. GemBuilder is a set of classes and primitives installed in client
smalltalk=20
image to facilitate working with the two object spaces (Smalltalk-Client &=
=20
GemStone-Server).=20

Q. What is GBSM?
Ans. GBSM is global that refers to the sole instance of GbsSessionManager
class.=20
GBSM manages all known GemStone sessions and keeps track of the current=
 session.

Q. How do I log into GemStone programmatically?
Ans.    GBSM   loginWithParameters: aGbsSessionParameters.
        or
        aGbsSessionParameters login.

Q. What are the two different types of transaction modes in GemStone?
Ans. 1. Automatic transaction mode: A new transaction begins automatically=
 when=20
one commits or aborts a transaction.
2. Manual transaction mode: Transactions begin as a result of explicit=
 request.

Q. What is a connector?
Ans. A connector connects a GemStone object and a client smalltalk object
when a=20
session logs in to the database.

Q. What are the different kinds of connectors?
Ans. 1. Name connector connects a smalltalk object with a GemStone object=
 based=20
on their names (which can be different).
2. Fast connector keeps a direct reference to a smalltalk object and a=
 GemStone=20
object id. This makes the connection fast because no resolution is=
 necessary.

Q. What is the difference between a global connector and a session=
 connector?
Ans. A global connector connects two objects whenever any session is logged=
 in=20
whereas a session connector connects two objects only when a specific=
 session=20
is logged in.

Q. Do I need to define a connector for every object in my application?
Ans No, because a connector connects not only the immediate object but also=
 all=20
those objects that can be reached from it. Define connectors for only the=
 root=20
objects of the persistent subsystems.

Q.What is a root object?
Ans. Root objects of an application are the persistent objects from which=
 all=20
other persistent objects can be reached. The most common kinds of root
objects are
(i) Global variables
(ii) Class variables
(iii) Class instance variables

Q What is a symbol list?
Ans. A symbol list is an array of symbol dictionaries. Symbol list is used=
 in=20
compilation of GemStone code, in order to resolve references to objects by
name.=20
Each GemStone user has a symbol list. Only objects named in symbol=
 dictionaries=20
in a user=92s symbol list are visible to that user.

Q. What are the names of default symbol dictionaries of a GemStone user?
Ans. Globals, UserGlobals, Published and UserClasses.

Q. How do I invoke a de{*filter*} in GemStone?
Ans. Insert    self pause.    in a GemStone method.

Q. What is the difference between the terms faulting and flushing?
Ans. The term faulting refers to moving modified GemStone objects into the
client=20
Smalltalk , either creating a client Smalltalk replicate or updating an
existing=20
replicate. The term flushing refers to moving modified client Smalltalk=
 objects=20
into GemStone.

Q. How do I remotely excute code in GemStone from Smalltalk side?
Ans.    aGSSession   excute: aString
        aString contains GemStone smalltalk code.

        aGSObject   remotePerform: aSelector.

Q. What is a forwarder?
Ans. A forwarder is a client smalltalk object whose state and behavior are
actually=20
in GemStone. The forwarder knows which GemStone object it represents, and
responds=20
to all messages by passing them to appropriate GemStone object. Forwarders=
 are=20
implemented by class GSForwarder. Its gsObj instance variable points to the
proxy=20
representing the GemStone object.

GSForwarder implements #doesNotUnderstand: as following.
#doesNotUnderstand: aMessage

        ^gsObj=20
                remotePerform: aMessage selector
                withArgs: aMessage arguments

Q. How do I create a forwarder?
Ans. 1. aGSConnector   postConnectAction: #forwader
2.  aGSSession   fwat: anObject
3.  by implementing  class method #instancesAreForwarders to specify all
instances=20
of a class are forwarders.
4.  by sending #asForwarder message to an instance of GSObject class.

Q. What is the difference in results of sending the following messages to a
forwarder?
        aGSForwarder   name    and   aGSForwarder   fwname.
Ans.   aGSForwarder    name   returns a replicate.
       aGSForwarder    fwname   returns a forwarder.

Q. What is a replicate?
Ans. A replicate is a Smalltalk copy of a GemStone object. Messages sent to=
=20
replicates require no communication with GemStone for processing.

Q. What is a stub?
Ans. A stub is an empty placeholder that knows nothing except which object=
 it=20
represents in GemStone. It is implemented by GSObjectStub class.=20

Q. How do I control the number of levels to replicate when updating an=
 object=20
from GemStone to Smalltalk?
Ans. By implementing #defaultGStoSTLevel method of GSSession class. A level=
 of=20
0 means no limit, replicate the entire object. A level of 2 means retrieve=
 root=20
object and each object it references . Objects at level 3 are converted into
stubs.

Q. How do I unstub a stub?
Ans. By sending #fault message to a stub.

Q. Can I pass a stub as an argument to a primitive method?
Ans. No.

Q. How do I ensure that an object is never replicated to contain a stub down=
 to=20
a certain level?
Ans. Implement class method #noStubLevel. Its return value should be an=
 integer=20
specifying the number of levels to replicate.

Q. How do I convert a replicate into a stub?
Ans. By sending #stubYourself message to replicate.

Q. What is the result of sending a message to a stub?
Ans. It replicates the GemStone object it represents as a Smalltalk object,
then=20
become that object and forwards the message. GSObjectStub implements
#doesNotUnderstand:=20
as following.

#doesNotUnderstand: aMessage
        ^self fault=20
                perform: aMessage selector
                withArguments: aMessage arguments.

Q. What is the difference between lazy and immediate fault policy?
Ans. In lazy faultPolicy a change initiated in GemStone causes Smalltalk
replicate=20
to be turned into a stub whereas in immediate faultPolicy a chage initiated
in GemStone=20
replicates  the client Smalltalk immediately.

Q. What do I mean by class history of a GemStone class?
Ans.  GemStone supports multiple versions of a class. It keeps track of=
 these=20
versions in a class history object. Sending #classHistory message to a class=
=20
returns its class history.

Q. How do I remove a version of GemStone class?
Ans=20
        aClassHistory  removeVersion: aClass

Q. How do I find the latest version of a GemStone class?
Ans  aClass classHistory last.

Q. How do I migrate all the instances of a class to its latest version?
Ans.  aClass migrateInstancesTo: aClass classHistory last.

Q. How do I remove all the old versions of a class?
Ans.=20
        1 to: ( aClass classHistory size - 1)
                        do: [ :each |=20
                                aClass classHistory removeVersion: ( aClass classHistory at: each)].

Q. What is the difference between the results of sending #asLocalObject and=
=20
#asLocalObjectCopy messages to  aGSObject?
Ans. #asLocalObject returns a replicate. #asLocalObjectCopy returns a local
deep=20
copy of the GemStone object repesented by the receiver. This resultant=
 object=20
doesn=92t maintain the transparency between Smalltalk and GemStone.

Q. How do I mark a Smalltalk object as dirty?
Ans    anObject markDirty. It is generally included in the setter methods=
 for=20
the object.=20

Q. How do I mark objects dirty automatically without sending #markDirty in=
=20
setter methods?
Ans     aClass  markDirtyOnInstVarAssign  marks the objects of aClass dirty on=
=20
assignment of instance variables.
        aClass  markDirtyOnAtPut  marks the objects of aClass dirty if they receive=
=20
#at:put: messages.
*********************************************************************

         _________
         \        \
          \        \               ___    __
           \        \              \  \  / |
           /\        \              \  \/  |
         O/  \ *****  \____________  \ /   |
     \ /   ############## ***+++^^^^^^^\   \
      X **################***+++^^^^^^^ \   \
     / \   ############## ***+++^^^^^    \___\
               / \       \          \o
             O/   \       \
                   \       \
                    \       \
                     \       \
                      \_______\    =20
                                  =20

                I'D  RATHER  BE  FLYING  !!!



Tue, 13 Apr 2004 17:32:49 GMT  
 
 [ 1 post ] 

 Relevant Pages 

1. Gemstone FAQ - where?

2. GemStone FAQ (v.1.0)

3. GemStone FAQ (v.1.0)

4. GemStone FAQ (v.1.0)

5. GemStone FAQ (v.1.0)

6. GemStone FAQ (v.1.0)

7. GemStone FAQ (v.1.0)

8. GemStone FAQ (v.1.0)

9. GemStone FAQ (v.1.0)

10. GemStone FAQ (v.1.0)

11. GemStone FAQ (v.1.0)

12. GemStone FAQ (v.1.0)

 

 
Powered by phpBB® Forum Software