Evolving EsiDB to Google's App Engine.

7 views
Skip to first unread message

Terry

unread,
Oct 20, 2009, 10:59:47 AM10/20/09
to EsiObjects Community, danwill...@gmail.com
The goal of the EsiObjects project is to simply get it out there and
used. Based on discussions with various people, I've tentatively
decided upon a development path that I think will accomplish those
goals.

The EsiDB space within the EsiObjects assembla project describes the
project goals and outlines the general milestones. If you want to join
the project, let me know. The dates on these milestones are not
accurate at this point.

In a nutshell, the end goal will be to have the EsiDB document-
oriented database reside in the cloud hosted by Google's App Engine.
It, of course, will be based on EsiObjects/GT.M foundation.

At this point I'm assuming I will be doing the work so, not only is
the project designed to accomplish the goals, but to let me
incrementally learn these new technologies - it's not easy being
green ;-)

The following are general goals of the project:

1) Finish the EsiDB implementation. At this point I have a framework
in place that includes creation and storage of data pools and data
tables within the data pools based on Base$NewNamePools and ESI
$IndexTables classes. The framework manages all error processing and
logging, import and exporting of tables in XML format, application and
database API's, etc. Work remaining is to add events to the tables
operations, provide type validation for columns and implement the
criteria search iterators.

2) Build UI's using two approaches:

a) Using EWD Open Source, build a UI for EsiDB. Aside from the
obvious benefit of using EWD to support out Slipstream effort, a UI
design will evolve out of this that should be reusable.

b) Using NetBeans, evolve the UI to the a Java platform using the
EsiObjects Java Gateway or Java Proxies. The goal is not only to have
a more mainstream approach to accessing EsiObjects, but to gain
experience with NetBeans for subsequent tasks.

3) Build a EsiObjects/GT.M plug-in for Google’s App Engine using
NetBeans with the GWT/DataNucleous plug-in. The goal will be to put
EsiObjects and EsiDB in the ‘cloud’ as an alternative to all the other
Object Store API's including BigTable.

4) Develop a API within the Google App Engine for Java Programmers
where they can persist Java objects using EsiObjects components.

Comments are welcome...


Terry

Alex Woodhead

unread,
Oct 20, 2009, 5:43:05 PM10/20/09
to EsiOb...@googlegroups.com
Hi Terry,

Just to clarify I can... if I have previously mislead with previous comments for appengine.

Appengine cannot directly host an EsiObjects/GT.M system instead a GT.M database would need to be hosted in something like Amazon EC2.

The suggested DataNucleous projection could be two fold:
1) Transparently calls out to GT.M on a remote system, a bit like running a remote SimpleDB query except that the view is Java Objects.
2) Call into a local GT.M system

In the case of option 1 - look very closely at the Java white list in Google appengine. There is a specific HTTP class you'd want to remote with, there is a timeout so want to catch / retry on specific errors. The overall web "page" / Ajax call must complete within 30 seconds. There is no threading allowed. So if you want retry behaviour this may be better placed in a client side GWT script.

In the case of option 2 - This is where you are taking advantage of the portability of the appengine application to be re-hosted on a cloud with more direct GT.M service.

*** The toolset for appengine and GWT are really driven on Eclipse. ***
If I wanted to be thinking appengine developer I would use Eclipse. Don't get me wrong I use Netbeans mostly... but switch between them is a distraction.

Since the brunt of this effort is Java lead, you may want to invest time in GWT as the UI. Since both the client and the server are implemented in Java. When you deploy the java client code is compiled into JavaScript. It will ensure you don't inadvertently use Java classes or features outside of the white list.
Is there an opportunity here to write a GWT library in Java for developers to include in their projects that provides interesting EsiObjects/GT.M capabiltities via an appengine proxy?
Could EsiObject projections be made to work via an appengine proxy serlvet - then your Java EsiObjects could compile to JavaScript objects via the GWT compiler?
Follow the GWT rabbit...

In addition to Java which is relatively new on appengine one could also look at an EsiObjects wrapper for Python.

The GWT and Python angle might leverage greater uptake via an appengine community? When in Rome...

Cheers


Alex


Terry L. Wiechmann

unread,
Oct 20, 2009, 6:54:33 PM10/20/09
to EsiOb...@googlegroups.com
Alex,

When I step out of my knowledge domain and into the Java world, I am by definition "mislead". That world is way too complex for me. I'll stick to doing tasks 1 and 2a - clearly within my domain. Doing the others will require an organization to back it up anyway.

There is some interesting things going on in the Python world - Pyjamas (http://pyjs.org/). Python is a great OO language - I used it with Zope/Plone to build an Intranet for a non-profit organization. Great system!

Thanks...
Terry L. Wiechmann
978-779-0257
http://www.esitechnology.com

Alex Woodhead

unread,
Oct 21, 2009, 3:32:30 PM10/21/09
to EsiOb...@googlegroups.com
Hi Terry,

Thanks for the pyjamas link... interesting project.

If python is your strength then perhaps its worth looking at:

... for an EsiObject projection instead of Java and DataNucleus.

In the context of:


Its the same appengine community at the end of the day. :)

What IDE do you use for your Python development?

Cheers


Alex
Reply all
Reply to author
Forward
0 new messages