I assume that as part of the initiative to enter the IoT marketplace, an ARM port of Cache is on the cards anyway?

if so, it might as well also run on the Raspberry Pi!

Needless to say, people are wanting to use databases, for all sorts of reasons, on the RPi - eg https://www.raspberrypi.org/forums/viewtopic.php?f=34&t=142506

and of course, they're ending up using the other usual databases that have made the investment to port to it.  So the RPi community remains unaware of what Cache could potentially do for them instead.

Seems like a missed opportunity to me, but there you go.

With Node.js versions coming in thick and fast, the question: "where do I get the appropriate version of cache.node?" is increasingly a problem for people who want to use Cache with Node.js.  

Bundling the latest versions of cache.node with build kits for the latest versions of Cache makes little sense - people need to use Node.js with whatever version of Cache they currently have installed and use.  If they update Node.js (which, as I say, is a frequent requirement these days), they won't want or expect to update Cache too.  So currently you have to download a Cache kit and install it on some temporary machine just to extract the latest cache.node files.

Instead, can I request that the cache.node kits are distributed separately in a location that users can know to look for?

Anyone else agree?

Rob

The web site seemed to be quietly taken down some weeks ago.  Despite what the text that now comes up says, the download files appear to no longer be at their original URLs.  

I have saved copies of the distribution files, read-me and original license (which permits re-distribution).  If you're interested, email / PM me for info (rob dot tweed at gmail dot com)

If you're anything like me, you'll want to try out all this Node.js and EWD 3 stuff on a separate throwaway Virtual Machine or EC2 instance.  If so, take a look at this "installer" file that I've created:

https://github.com/robtweed/ewd-3-installers/blob/master/ewd-xpress/install_cache.sh

It's designed for use with a new "virgin" Ubuntu machine/virtual machine.  It's not really an installer script as such - there are a few steps that, by necessity, would have to be done manually, but you may find it a helpful set of steps to cut and paste into a terminal window, or to adapt for your own use into a proper installer.  I've added comments in all the places you'd need to do something manually or modify the script.

Anyone familiar with other flavours of Linux should be able to adapt it.

What will it do? It contains the instructions you need to:

  • install and configure a copy of Cache (it assumes you've downloaded the install kit)
  • install Node.js
  • Install ewd-xpress (plus its dependencies) and configure it ready for use

Hopefully this "script" will allow you to get a system up and running to play about with in just a few minutes.

One of the really exciting and powerful technologies that Cache developers should be looking at is GraphQL which has been developed by Facebook:

http://graphql.org/

EWD 3 makes it very straightforward to integrate GraphQL with Cache.  I've put together a simple React.js-based example / demo with explanatory notes here:

https://groups.google.com/forum/#!topic/enterprise-web-developer-communi...

Benjamin

In my opinion, your questions are important: I'd summarise them as follows:

- is this new Document model an attempt to bring Cache to the attention of a new audience and marketplace, or is it really just targeted at the incumbent user-base as a means of persuading them not to migrate to competing Document databases such as MongoDB?

I'd like to think and hope it's the former rather than the latter.  

Many of you will be aware that I (and George James) have been championing the cause for Cache as a universal NoSQL database since as along ago as 2010, in fact very soon after the whole NoSQL movement burst on the scene in late 2009.  We saw this as a great opportunity to raise the profile of Cache.  I'm pretty disappointed that 6 years later, I'm yet to come across anyone I meet in the IT mainstream who has heard of Cache, despite its powerful NoSQL capabilities.

There are a number of reasons why we're still in this position of obscurity, but what has become clear to me in the intervening years is that there's one really key stumbling block: almost nobody out there wants to have to learn a new and obscure (and many would say antiquated) language in order to access a database, no matter how powerful and flexible that database.  

If the objective is to bring Cache to the attention of that new NoSQL-focused audience, it's become clear to me that all its database capabilities have to be accessible via the language(s) that people already use.  Since it's also clear to me that the major language adopted by the NoSQL marketplace is JavaScript, then it makes sense that JavaScript must become a first-class language for Cache if it's to stand any chance of the wider recognition it deserves in the NoSQL world.  

Unless the new Document database capabilities of Cache are available directly from JavaScript, unfortunately my conclusion is that its only real audience is the incumbent user-base who are happy to continue using Cache ObjectScript and Cache's built-in programming environment.

See my recent posting on EWD 3 for my approach: my target audience is the JavaScript developer in search of something rather more interesting and powerful than the usual NoSQL databases, not the incumbent COS-oriented developer, who may not see the point in EWD 3, Document databases and all this JavaScript stuff!

There's a massive opportunity out there, but nearly 7 years since the NoSQL party began and 5 years since the JavaScript party began, I worry that the new Document database capability is too little, too late to be invited to either.

1) ewd-document-store is primarily designed for use by the JavaScript developer who wants to use / access a Cache database without needing to learn or use COS, or for anyone wanting to migrate their logic to JavaScript whilst retaining Cache as a database.

2) it works with any version of Cache that supports the cache.node interface (at least 2012.x onwards)

3) It can be used against existing/legacy  global storage as well as new storage.

4) It's free Open Source (Apache 2 licensed)

Read the documentation for more information.

The simple answer is that JSON can't naturally represent a node that is both an intermediate one and a leaf one , unless you introduce some arbitrary convention for defining a "special" node that represents a value also held by an intermediate node.  There's no "standard" convention for this, since, from a JSON point of view,  such a situation doesn't make sense.

The way I've tackled this with the Node.js ewd-document-store module (http://gradvs1.mgateway.com/download/ewd-document-store.pdf) which abstracts global structures directly to JSON, is to provide not only a JSON mapping (via the getDocument() and setDocument() methods, but also have a read/write value property for any specified "DocumentNode".  If you use getDocument(), you'll not see any values for intermediate nodes, but separately you can home in on such nodes individually and access their data via its value property.

A DocumentNode's "exists", "hasValue"  and "hasChildren" boolean properties can be used to determine the nature of each node.  In truly JSON-mapped global structures, hasValue and hasChildren will be mutually exclusive, whereas it's quite feasible for (typically legacy) global structures to have DocumentNodes where both are true.

Ideally the solution is to never have global structures with data values for intermediate nodes, but typically the problem is a legacy one.

Native Mobile Cache-based app development is now possible in JavaScript using React Native and EWD 3.  For instructions, see https://groups.google.com/forum/#!topic/enterprise-web-developer-communi...

The benefits are huge: just one language (JavaScript) for front-end and back-end app development on all platforms, one development pattern for front-end UI development on both desktop and mobile platforms, and the opportunity to re-use the same back-end logic for desktop and mobile apps.  

Additionally, just like desktop browser-based apps, with EWD 3 and React Native, Mobile apps can use WebSockets instead of REST to access the back-end and Cache.