Great, thanks for sharing this. Maya really is a great graphics developing company and learning center, which provides youth excellent opportunity to use your creative mind in game developing area.
ok so i watched the video and ive been using stuff like this also. When watching I questioned the use of the webserver as essentially a front end to a db. And why not just query the db directly using the python bindings or PySide? I thought, wait, I use the same exact thing, āwhy dont I query the db directly?ā So i have been having this argument in my head for the past couple of days. The only benefits I can see are:
It creates a standard interface to the db
If you use django or some other ORM, its āeasierā than writing SQL
Other benefits may be a web front end for viewing or manipulating the data, but if not, if its just a database, iām not sure if i can justify a whole webserver just to query a db. Iām currently going over some of my own tools to see if i really need the webserver stuff or if i can get away with just connecting to the db manually.
My question to you is, how are you leveraging the webserver outside of simple db queries?
To answer your question. I recently completed the core setup of a system that would use slave machines in the system to do playblasts outside of Maya for animators.
The system, since itās a rather large number things working together now, will check a playblast request into the db and also check to see if there is an available slave machine. When a job is completed on that machine it checks to see if there are more jobs to do and if so checks one out and continues work. The server side is handling all of this of course. The only thing the slave machine does and the user do, is check in and check out. The server is handling the flow of traffic from the different machines while making sure all of the slave machines can complete their jobs before sending them work.
The requests are all simple since all itās doing is changing values in the db, but the server is also doing checks to make sure jobs will be completed. It does this by simply sending a request down to the slave asking if itās alive if so, it checks the slave machine out and sends it the work. If the machine isnāt, it simply setās the machines availability to false and moves on to the next machine in the db or just sets that jobs working status to false if there are no more slave machines available at that time.
So I do leverage the web server to handle more than just a db request, but this is a rather specialized case. But to answer some of your other questions. With a rest setup you can open your db to the web through web ports which are secure, wear as if you where directly talking to the server youād have to open ports up to the internet and expose your sql db. Itās also extensible so it can work with just about any db so you arenāt having to learn specific sever calls and can focus on just communicating information back and forth.
Using django is nice for things like standardised auth, plus itās inherently organized around fronting remote calls - if you did it your self (say by writing a wsgi server or similar) youād have to do a bunch of work to do thinks like parse request URLS into commands and route them to appropriate handlers, which is all free. I run stuff on the django test server all the time, so I donāt have to worry about maintaining a ārealā apache server ā this would not scale well for a big application used on the whole web (and Iād worry about security) but in house for dozens of users itās not a problemā¦ Tech Art Survival Guide: ...And I thought we had it bad...
Iād argue about the scalability of djangoā¦ Considering sites like pinterest.com and curse.com which are developed with django. Security shouldnāt be to much of an issue too since you can tokenize your communications to the REST framework so users have to be logged in and such.
Oh sorry I miss understood. You could us nginx instead of apache and postpresql if you ever expand. Apparently Postgres works better with django. I recently got a raspberry pi and have been wiping and configuring it while learning how to setup my own Linux server.
If you use django or some other ORM, its āeasierā than writing SQL[/QUOTE]
Just make sure whoever writes the code knows how it translates to SQL or you will end up with very poorly performing queries. i.e. having an ORM doesnāt mean you donāt need to understand how it works under the hood
pro direct db access:
you can hack your SQL code in right away. Quick and dirty
con direct db access:
re-compiling whatever db-module you have for the next Maya versions(s)
less abstraction. You change the db structure, you have to change the queries on all distributed scripts
another 3rd party modules to distribute and make sure everyone has installed
Although, if you feel comfortable working with db records, rather than objects, you donāt need a sophisticated ORM on the server side. Just JSON encode the results of your queries and hand them back. It really depends where you plan to have the business logic - server or client side?
I would agree on all counts, but it is āeasierā to write against an ORM. Obviously youād get performance gains on pretty much all front if you did it by hand.
To counter the point against compiling libs, for 2014+, you can just use PySide and everyone has it already
Iād argue on what you consider easier or not. If django is already setup and the restful api is installed. As long as I already know the fields I want to use, I can get the models, serializer, and views view setup in around 10-15 mins and be sending data to the db through urls. Now I consider that pretty easy, just took some learning to do.
I think the rule of thumb is ORMs work better when all the work is on the client (since you can manipulate them as objects, instead of having to constantly transalate back and forth between data and object land) and pure sql works better when the hard work is on the server (since you can write fancier queries and use stored procedures)
[QUOTE=TheMaxx;23704]I would agree on all counts, but it is āeasierā to write against an ORM. Obviously youād get performance gains on pretty much all front if you did it by hand.
To counter the point against compiling libs, for 2014+, you can just use PySide and everyone has it already[/QUOTE]
I forgot not everyone is stuck in outsourcer. Most clients of us donāt seem to use 2014 yet
I havenāt tested built in SQL connectivity in 2014 though. The C:\Program Files\Autodesk\Maya2014\qt-plugins\sqldrivers folder is pretty empty in my installation. I donāt see a libmysql.dll, and I doubt they compiled it all statically. Did you do any tests?
Distributing dlls is even more annoying though than distributing modules though, especially when you work in a shop like mine where all computers are pretty much locked down due to security reasons.
[QUOTE=Theodox;23706]I think the rule of thumb is ORMs work better when all the work is on the client (since you can manipulate them as objects, instead of having to constantly transalate back and forth between data and object land) and pure sql works better when the hard work is on the server (since you can write fancier queries and use stored procedures)[/QUOTE]
you definitely want your ORM where you do the heavy lifting. What Iām trying to setup myself is a REST API on my Apache server. Then aggregate and serialize on the server side, and de-serialize and map it to objects on the client side. With almost a dozen Maya versions in our shop I really hate distributing and troubleshooting 3rd party modules. And everyone having direct access to the Python source code and to the DB (even if itās just for updates) doesnāt sit well with me.
Iām still torn about Django, because I got a good Apache/wsgi setup going. Django looks easy enough from the outside. But then again Iāve seen people tinker with supposedly easy Django stuff for agesā¦plus thereās a big support community. yeah I get it, itās popular thatās why the community is big - or maybe people just need a lot of help to iron out.
I havenāt tested built in SQL connectivity in 2014 though. The C:\Program Files\Autodesk\Maya2014\qt-plugins\sqldrivers folder is pretty empty in my installation. I donāt see a libmysql.dll, and I doubt they compiled it all statically. Did you do any tests?
Distributing dlls is even more annoying though than distributing modules though, especially when you work in a shop like mine where all computers are pretty much locked down due to security reasons.
You are correct! I guess they opted out of that. Its pretty bare bones