So, I was able to get data from MongoDB collections pulled into datasets, and written back to datasets as well. A little scripting was required. I packaged it all up and attached it to this post. Feel free to play around with it if you'd like.
There's 1 window and 1 script module to make this all work. And, of course, make sure you grab the MongoDB module as well.
Project: MongoDB.proj
MongoDB Module: MongoDBDriver.modl
Note: There aren't any performance optimizations to this code. Certainly, if you're thinking about using this in production, make sure to do a thorough code review and adjust it to act the way you need for your organization.
Ignition: 7.5 (7.5.3)
Wednesday, October 17, 2012
Friday, October 12, 2012
MongoDB in Ignition
I was recently asked whether Ignition supports NoSQL. Well, NoSQL certainly isn't right for most things an Ignition system will be used for, but I thought I'd throw together a little proof-of-concept to show it could be done.
So, I present to you, MongoDB in Ignition!
It was really quite simple to make work (took 30 minutes). Here's what I did:
1) Downloaded the MongoDB Java Driver from Mongo's website
2) Packaged it up as a module, telling it to load in all 3 contexts
3) Wrote a script based on http://www.mongodb.org/display/DOCS/Java+Tutorial
Here's my module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<modules>
<module>
<id>MongoJavaDriver</id>
<name>MongoDB Driver</name>
<description>The MongoDB Java Driver.</description>
<version>2.9.1.0</version>
<requiredignitionversion>7.5.3.1163</requiredignitionversion>
<requiredframeworkversion>4</requiredframeworkversion>
<freemodule>true</freemodule>
<!-- The MongoDB Java Driver libraries -->
<jar scope="DCG">mongo-2.9.1.jar</jar>
</module>
</modules>
After loading the module, you can simply use MongoDB from the Ignition Designer, Client, or Gateway.
Here's my testing script from my gateway:
from com.mongodb import Mongo
mongo = Mongo("localhost", 27017)
db = mongo.getDB("test")
testCollection = db.getCollection("test")
result = testCollection.findOne()
print result
Since I have MongoDB running on my system, the script above returned the first result found in the "test" collection, which was a:1.
Resulting Output:
{ "_id" : { "$oid" : "50787936a3513589171132bd"} , "a" : 1.0}
Simple as that. If you want a copy, follow the link below.
Download the module: MongoDBDriver.modl
Enjoy!
Note: Using the module this way gives you a straight connection to your MongoDB from the Ignition Gateway, Client, or Designer. If you're running a script in the client or designer, it does *not* forward the information through the gateway. (This is different than Ignition database connections, which forward all traffic through the gateway.)
Ignition Version: 7.5 (7.5.3)
Download the module: MongoDBDriver.modl
Enjoy!
Note: Using the module this way gives you a straight connection to your MongoDB from the Ignition Gateway, Client, or Designer. If you're running a script in the client or designer, it does *not* forward the information through the gateway. (This is different than Ignition database connections, which forward all traffic through the gateway.)
Ignition Version: 7.5 (7.5.3)
Subscribe to:
Posts (Atom)