Transcript
Page 1: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Transparent Referencesand Garbage Collectionfor Project Darkstar– making it easier to write applications on Project Darkstar Server

Esko LuontolaProgrammer, UI Designerwww.orfjackal.net

Page 2: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 3: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 4: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Darkstar requires special handling for ManagedObjects

Page 5: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

Page 6: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Page 7: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

BEGIN TRANSACTION

Page 8: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Person donald = new Person("Donald Duck");

Page 9: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

donald.setAddress(new Address("Duckburg", "Duck Street 313"));

Page 10: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

Person mickey = new Person("Mickey Mouse");

Page 11: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setAddress(donald.getAddress());

Page 12: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

id = 1

id = 1

mickey.setRoommate(donald);mickey.roommate = AppContext.getDataManager().createReference(donald);

roommate

Page 13: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

id = 1id = 2

donald.setRoommate(mickey);donald.roommate = AppContext.getDataManager().createReference(mickey);

roommate

Page 14: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

id = 1id = 2

“donald” = 1

AppContext.getDataManager().setBinding("donald", donald);

roommate

Page 15: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1

Write

id = 2

“donald” = 1

COMMIT TRANSACTION

roommate

Page 16: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

Write

“donald” = 1

COMMIT TRANSACTION

roommate

Page 17: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

roommate

Page 18: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 19: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 20: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

Page 21: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 22: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

BEGIN TRANSACTION

Page 23: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

Person donald = (Person) AppContext.getDataManager().getBinding("donald");

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Load

Page 24: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

Person mickey = donald.getRoommate();Person mickey = donald.roommate.get();

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Load

Page 25: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

System.out.println(mickey.getName() + " lives in " + mickey.getAddress().getCity());

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Page 26: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

donald.setRoommate(null);

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Page 27: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

AppContext.getDataManager().removeObject(mickey);

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Page 28: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

COMMIT TRANSACTION

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Write

Page 29: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Transaction

COMMIT TRANSACTION

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Delete

Page 30: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Page 31: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 32: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 33: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What is the problem?

Page 34: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Too much work for the programmer!Mixed responsibilities! Leaking abstractions! Tight coupling!

. . .

Page 35: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Solution• Make Darkstar itself responsible for taking

care of the technical details of ManagedObjects referring to each other

• Code using an object should not know the implementation details of that object – whether it is a ManagedObject or not

• Refer to ManagedObjects through proxies> Allows lazy loading> Separates object graphs during serialization> And the code using the object will never know it!

Page 36: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 37: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

ProxyType.CLASS- generated proxy extends target class- all fields must be private- all methods must be non-final- the class must be non-final(- an accessible default constructor is not needed, as the constructor will not be called)

ProxyType.INTERFACE- generated proxy implements the same interfaces as the target class- instances of the class must always be used through their interfaces

Page 38: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

– with transparent references and garbage collection

Page 39: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Page 40: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

BEGIN TRANSACTION

Page 41: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Person donald = new Person("Donald Duck");

Page 42: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

donald.setAddress(new Address("Duckburg", "Duck Street 313"));

Page 43: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

Person mickey = new Person("Mickey Mouse");

Page 44: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setAddress(donald.getAddress());

Page 45: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setRoommate(donald);

roommate

Page 46: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

donald.setRoommate(mickey);

roommateroommate

Page 47: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

id = 1

id = 1

“donald” = 1

AppContext.getDataManager().setBinding("donald", donald);

roommateroommate

Page 48: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

id = 1

id = 1

“donald” = 1

COMMIT TRANSACTION

roommateroommate

!

Page 49: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 id = 2

“donald” = 1

COMMIT TRANSACTION

roommatePerson Proxy

roomm

ate

Person Proxy

Write

Page 50: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 id = 2

“donald” = 1

COMMIT TRANSACTION

roommatePerson Proxy

roomm

ate

Person Proxy

!

Page 51: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

Write

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 52: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 53: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 54: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 55: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

– with transparent references and garbage collection

Page 56: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 57: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

BEGIN TRANSACTION

Person ProxyPerson Proxy

Page 58: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person donald = (Person) AppContext.getDataManager().getBinding("donald");

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Load

Page 59: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person mickey = donald.getRoommate();

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 60: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

System.out.println(mickey.getName() + " lives in " + mickey.getAddress().getCity());

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Load

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 61: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

donald.setRoommate(null);

Person Proxyroommate

Person Proxy

Person ProxyPerson Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 62: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Write

Page 63: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Not Modified

Page 64: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 65: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 66: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 67: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 68: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 69: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 70: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 71: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Future directions• Include transparent references in the official

Project Darkstar Server distribution• Areas which need more work

> Scalability of the multi-node version> Improved garbage collector, multi-node support,

alternative algorithms, reference counting vs. tracing collectors

> Refactoring serialized data, rolling upgrades> Indexing and querying the database> ...

• It's all open source!

Page 72: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Questions?Project Darkstar Community– official web site, discussion forumshttp://www.projectdarkstar.com/

Darkstar EXP– unofficial distribution of Darkstar Server with experimental features, includes transparent references and garbage collectorhttp://code.google.com/p/darkstar-exp/

Dimdwarf Application Server– same transparent reference implementation, alternative server implementation, primarily designed for embedded standalone modehttp://dimdwarf.sourceforge.net/


Top Related