So it just depends how far down the rabbit hole you want to go ... or need to go to get the performance you need. Its best not to over optimize unless you need to. But sometimes its hard to predict the future and what scale of performance you'll need then.
On the front end I think ember is quite good for performance, if you're doing mapping stuff you'll probably be using HTML5 SVG or Canvas in some way, or you could get into WebGL. These technologies would go on top of ember. I'm looking at a JAvaScript visualization library called d3.js that has a nice connection to python. You can use your GeoDjango on the backend and use python's matplotlib on the backend to render some maps. Then d3.js has an interface to matplotlib and renders the map on the front end. You can also send AJAX data to d3.js on the front end and render stuff that updating quickly. So maybe render the background map with matplotlib and d3 and then send POIs or tracks or whatever it is that your apps needs by some JSON representation of the vector graphics to render through d3.js. WebGL is a fairly new technology. Most browsers support GPU computing now and I think many mobile devices do too ( although they have tiny weak GPUs ). It might may an important difference but it may be a rabbit hole if you're not farmiliar with OpenGL. It also may not behave terribly robustly on some devices or environments.
On the backend django is pretty fast for relational DBs, but Google App Engine servers data more quickly. I think App Engine is very quick for serving data but slow at storing it. If your map data is mostly predeterminedf this might be a good fit. Django models integrates nicely with App Engine no I've heard. But for Big Data there are much more performant options that are called No-SQL databases. CoachDB is one that's good for heirachical data, if you have massive quantities of data, you can use technology called Hadoop, Pig and Map Reduce. With massive ammounts of data, even simple look ups take some time and these can significantly cut that time by using a different strategy than relational DBs. Redis is a technology that does very fast computations on the back end. This implements some some numerical methods and is basically optimized c code that can speed up performance quite a bit for some applications. I wish I knew more about these and plan to learn pretty soon.
The good news is that django plays nicely with all these alternative backend technologies. Django perfected the relational DB interface just as relational DBs became not the only players, but all the new technologies have nice integration with python and probably convenience functions for django specifically.
Django and Ember is a great backbone to build on, but depending on how much you scale you may need to learn other technology on the front and back end.
If you don't know how far your app will go, you can start out with a less scalable solution and if you plan right you can introduce the more scalable technologies when you learn them or need them. That's the story of the company I'm working for right now. And wow, if they had just started out with django and ember as the backbone they would have saved a lot of time. ;-)
Cheers,
Doug
On Saturday, June 1, 2013 1:34:01 AM UTC-4, JJ Zolper wrote:
Hello,So I'm thinking about bundling together Django and Ember. The reason is my front end is going to be lots of data in realtime. Think like overlaying a map with information for an example. Lots of data needs to be handled on the front end. Things need to be extremely dynamic.I love Django and the interface with the database and all that. I'm thinking a powerful solution might be tagging Django and Ember together. Has anyone done this? Anyone have any advice? My questions really are (like the questions on my mind are) like lets say I query the database and get this resulting queryset or list in a variable. In Django you hand that list off to the template. Like I'm not sure how to hand things back and forth between Django and Ember. How I would hand the result from the query to Ember aka JS and then display that to the front end.Does this sound like a powerful solution for handling large amounts of data? Really any information would be wonderful, better than nothing for sure...I need high performance and power for processing quickly and giving the users a seamless experience and I'm wondering if this might be the ticket?Thanks so much,JJ Zolper
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment