What databases are people using in Cloud environments with ASP.NET / ASP.NET MVC? [closed] - asp.net-mvc

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am looking at hosting a new site on a cloud service. It looks like cool technology, pricing is attractive, and I can scale in case my plans for global internet domination come to fruition.
I have spent a good chunk of time figuring out what back-end to use thought. The site is in ASP.NET MVC, and I have hit a brick wall when it comes to SQL Server. I am not keen on paying the licensing for a small site just starting up. It's great for the day job but I am looking past it for this new site.
SQL Azure looks like it's price is perfect, however the price of their computing scared me off, and Development Accelerator Core is too much risk with its contract stipulations.
I have been checking out all sorts of alternative approaches:
Open Source Databases (MYSQL, Postgres) with Entity Framework
Nosql (MongoDB, CouchDB, SimpleDB, DB40, Cassandra)
Dedicated SQL Server
SQL Server Web Edition
Calling SQL Azure from another cloud
Right now my plan is to host the web server (IIS) and the database server on the same instance (1GB RAM Windows 2008 R2) and then scaling out as needed.
At this point I welcome what others have figured out, what has worked, what hasn't worked. I appreciate any experiences you want to share.

db4o isn't free and their licensing is chaotic, or at least was when I spoke with them last. As a result, I'd stay away.
Don't forget about RavenDB by Ayende & crew. The licensing is about $700 but they say that they will consider waiving the first license fee for startups. I've been dabbling around with it and I've got to say, it's quite impressive NoSQL solution. It's similar to CouchDB but very .net oriented with some one ups on Couch (imo).
Finally, if you join BizSpark by Microsoft, they will give you some free airtime on Azure. Pretty sure some sql love is included with it.
Cheers and good luck mate.

Sql Azure here. You don't need the computing time to use the database, it only exists if you're running an application on Azure.

MySql with EF: so far only real issue I've faced was a bug with a very long running query in the MySql connector / a trip to the issue tracker revealed a workaround that one could use by modifying + compiling the source of the connector ... just until the fix went into the next patch.
db4o: this is in a recent project / already in place when I joined. 2 issues so far:
It doesn't have much support to efficiently aggregate data. As I understand this is usual in NoSql / you just use a different design for it (at least that's what we have done and have worked).
You need to understand well the various modes involved for the database and the operations. Trying to jump too far ahead easily gets you into performance issues at even small loads. It's more a learning curve issue, using the right bits performs very well.
I have to admit that Chance answer worried me for a moment. When I joined the project with db4o it was already in place, so I didn't look at license considerations at the time. This said, I've always understood that you can use GPL code on web sites. Similar to this answer: https://stackoverflow.com/questions/94346/can-i-legally-incorporate-gpl-lgpl-open-sourced-software-in-a-proprietary-clo/94468#94468, if you don't distribute you can use it. Based on the last comment posted by Chance, I'd say it's likely there was some sort of communication issue there.

orcsweb.com offer cloud servers for US$99 per month. Pretty good deal considering that I was paying US$300 to them for a virtual server.
The thing that sets orcsweb.com apart is their technical service. For US$124 per month, they provide a fully managed service on the server.
So for US$223 per month, I get it all and don't have to worry about the server for all my clients.
Database is thrown in for free: sql express 2005 or 2008. This sounds enough for your initial requirements. We run full blown eCommerce catalogues on this and it is fine. If the website grows, well then you that is good news and you can afford to pay for a sql server licence.
If this sounds like a plug for orcsweb, it is, but I don't get anything out of it... We have had great service from them. My job is to write apps, not run a server. We have about 30 clients and we host them all on our one account with orcsweb. That works out a US$7 per client. Can't be bad.
EDIT:
Important!!:
Please note that the above prices are for a Web Server. It host any number of websites and has a SQL Express installation thrown in.
I may have misunderstood the question, but the answer is still valid because the SQL Express will run your app in its early stages.

Not sure how much data you are dealing with, but are the SQL Express skus an option? They can handle just about anything a web app should be doing with the data while being at the right price point and an easy upgrade path.
Failing that, I'd go with the nosql option as that seems to make quite a bit more sense these days and its designed with the cloud in mind.

Related

Experiences OrientDB vs Neo4j [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am looking for the right Graph DB for a project. I tested Neo4j and really liked it. But the AGPL licensing issues put me off a little (you can read about it here).
I then found a couple of articles claiming that OrientDB is actually much faster. But they aren't really up to date. You find them here and here. And it is licensed under Apache 2, which is good.
So I just want to ask the great people of stackoverflow for your opinion.
Scalability is important and OrientDB claims to be better at that (here)
Licensing should be open
I have a complex model of vertexes/edges and need to retrieve relationships up to 3 levels deep
The mixture of document-graph that OrientDB offers seems to be a benefit
Thanks for your feedback!
Note: I am on the OrientDB team, my opinion is definitely slanted. I am also replying in a decidedly casual tone.
On your points:
1) On the topic of clustered deployment, currently it's not even a comparison. Neo4j is master-slave replication, they state themselves that it is generally only suited to single digit node deployments and the entire graph must belong on one machine. Hear it from them directly: http://www.infoq.com/interviews/ian-robinson-neo4j?utm_source=infoq&utm_medium=videos_homepage&utm_campaign=videos_row1
OrientDB has a full ability to do multi-master replication (every node can accept reads and writes), has the ability to shard data, intelligently distribute data using clusters and automate distributed queries and transactions. Our CEO recently did an excellent webinar for hazelcast showing our setup in this area: http://hazelcast.com/resources/orientdb-hazelcast-memory-distributed-graph-database/
2) Apache 2.0 is our community license, this is extremely liberal. You can even embed OrientDB community edition at no cost. (A)GPL worries some that their closed source code will be polluted. This may or may not be a threat, but it's sometimes hard to determine. Our community license is very feature rich including full distributed, multi-master replication and sharding.
3) Traversing relationships is kind of the point of graph databases. So either Neo4j or OrientDB will suit you just fine here... go 2000 levels in depth and it will still be performant.
4) The document-graph capabilities are great, but you knew I would say that. The product we've built is a production grade system designed to be a full on database not a side database used as a supplement to a RDBMS or other datastore.
I am coming off strong here. But I have good reason. Over the past 3 weeks a full team of developers at a world leading tech company have been testing OrientDB against Neo4j. For their very demanding use case, we were the better choice for a variety of reasons. Money was not the issue, we earned the business with our technology.
Take it for what it's worth, I've stated my bias up front. From my experience, once you work with OrientDB, there will be no looking back. Let us know if you need any help!

Suggestions for the best Rails collaborative development stack? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
Looking for some suggestions from the community for development stacks for collaborative environments. Could you share what you have and what has worked for you or your team?
The following is probably too verbose for some and an expression of just some rambling thoughts I've had about my particular scenario as I'm working with a hatchling dev group. SO, if you read it 1UP for you, otherwise, please just feel free to just share your thoughts re: the first question and what's worked for your team.
I have a situation where myself and a couple other developers are working together and I'd like to set up the "best" dev environment possible for Ruby on Rails development. At the moment I use git and some of the usually accepted best practices for development, however the other guys are new and not terribly familiar with the shell, git, etc. They're more from a php and monolithic environment.
I do have a central linux server that has been used hitherto for LAMP based dev for them. I can retool it to anything I'd like it to be as I'm quite adept and experienced at Unix system and network admin.
Could someone please suggest what may work well in this scenario? Again, ultimately we need to do collaborative development that has the lowest learning curve. I'll be the only one deploying to Heroku until I feel comfortable with their experience.
I would like to put something together that can get us all up to speed quickly in a matter of a day vs a longer learning curve and then allow them to grow into the shell and so forth over the next couple weeks.
What I was thinking was more of a shared SMB (mixed Windows and Mac workstations) and SFTP unified projects folder that has either apache virtual hosts for each project or thin rack. I'd continue to use my methods, but this could provide the flexibility for them to grow into this and be able to restart httpd or thin as per need.
Am I on the proverbial right track or has someone seen a better alternative? A lot of things have crossed my mind such as Gitorious (since we'll have a lot of small projects needing to be tracked and an enormous GitHub account is not feasible), Heroku, OpenShift and a lot of other things, but I have enough uncertainty that I'd like to get some input from the community as to the right mix for great collaborative agile development.
I have an answer but I think you have conflicting requirements: i.e. lowest learning curve vs low/free cost.
You say that GitHub is not feasible but it does offer unparalleled features for novice users. They can see commits on a website instead of on the commandline, can even edit files right in the browser (since yesterday, uses Ace) and gain insight into the branching/merging process.
Another paid option is http://cloud9ide.com/ which is also web-based.
I use my own development server as well but only use it for experienced people who need no hand-holding. If I were to let everyone on there the amount of support would consume my entire day.
It is my opinion that doing Rails development people should adopt the best practices in the field. See it like this: at least you won't burden them with learning Subversion or --eek-- CVS. Just seeing the commits on GitHub and having a discussion right after puzzling pieces of code is worth the money.

Do Ruby on Rails sites have performance issues? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Are Ruby on Rails site usually slower than java or .net sites?
(This is assuming developers are not abusing the technology.)
A lot of Ruby sites I have seen have performance issues.
Yes, Ruby on Rails sites do have performance issues, just like any other site. And just like any other site, those performance almost always are rooted in architectural decisions, not the language or the framework.
There was a nice presentation a couple of years back by Joyent (might have been RailsConf 2007?), which showed on one slide all the servers that are running on a single instance of their Rails platform. About 40 processes. Only one of those processes was the Ruby interpreter, everything else was stuff like the DNS resolver, web server, database server, MTA, memcached, message queue, reverse proxy, load balancer, etc. Every single one of those can screw up your performance. That's a 97.5% chance that your performance problems have nothing whatsoever to do with Rails or Ruby.
There's some really nice E-Mails on the JRuby mailinglists, and also some Tweets and blog posts by people who rewrote their Java web applications in Ruby and got a 10% performance improvement.
A really good example is Twitter. Twitter is one of the biggest Ruby on Rails sites in the world. It is also one with a very unusual usage pattern that will give any framework that is designed for "normal" web applications a tough nut to crack.
Now, you might think, why did I choose Twitter of all things as an example of performance and scalabilit, when clearly it is the exact opposite that they are known for? Well, that's exactly the point: they have had a ton of scaling, performance and reliability problems. And not a single one of those had anything to do with Rails or Ruby. In fact, Rails and Ruby were pretty much the only pieces in their stack that they did not have problems with.
They had problems with unexpected growth. It doesn't matter which language or framework you use: if users are signing on faster than you can buy new servers, there is nothing you can do.
They had problems with the performance and scalability of MySQL. Again, MySQL has nothig to do with Rails or Ruby. In fact, MySQL is written in C, so if you really absolutely must make any ridiculous conclusion about a programming language, based solely on a single incident, then it would be this: C is slow. If you want performance, stay away from C.
(In this particular case, in one interview, they actually did blame Rails: they said that because Rails only supported a single connection to a single database, their MySQL instance simply got overloaded. Within hours of that interview being posted, two Rails developers independently of one another both released Rails plugins to implement multiple connections. The lesson is: only the 80% solutions are in the core. Twitter clearly isn't in the 80%. The plugin API is there for a reason.)
They had problems with the performance and scalability of the overall system. It turned out that, in order to get the product out quickly, they implemented absolutely no caching whatsoever. Even the "static" Twitter homepage was completely dynamically generated for every single request. Again, this had nothing to do with Rails or Ruby. You can bring any site down by turning off their caches, I guarantee you that.
They hit some very bad scalability problems (and the MySQL problems mentioned above are related to that) which were simply caused by the fact that people used the site in a way not anticipated by the developers. Everybody knows that Twitter is a micro-messaging platform. Well, except for the Twitter founders. They had this brilliant idea for a micro content management system.
And so, they did build a micro-CMS. And of course, the central piece of a content management system, is a content repository, IOW a database. Users however used Twitter as a micro-messaging platform. And the central piece of a messaging platform is a message queue.
As a result, MySQL was being used as a message queue. No two things could be further apart than a database (especially a SQL database) and a message queue. The two have almost exactly opposite requirements and constraints.
And of course, the entire architecture was built around that content repository which was now being abused as a message queue.
In response to that, the Twitter developers wrote their own message queue in Ruby, which helped performance and scalability a lot. But not enough. So, they wrote another message queue, this time in Scala.
It is this single rewrite that is wholly responsible for, I would estimate, at leat 70% of all the Rails FUD out there. But, I don't know about you: when I write something that I have absolutely no idea how to write it, and then I write the exact same thing a second time, when I actually do know what the heck I'm doing … the second one is always better than the first. And I suspect that this is the case here, too.
In several interviews, the Twitter developers have pointed out that Ruby on Rails was not responsible for their scaling problems. On the contrary, only the maintainability of Ruby made it possible to do such large-scale architectural changes to fix their scaling problems.
To cut a long story short: today, Twitter is actually using Ruby on Rails for what it was intended to be used: for a web application. And they use a database for storing data and not as a message queue. And they use an actual proper message queue. The message queue and some other backend stuff is written in Scala. The frontend is written in Ruby on Rails. Some stuff is written in C.
And all is peachy.
The real moral of the story here is that you can substitute pretty much any large web app, any language, any framework into the above story and it would still be true. MySpace is one of the slowest, most unreliable websites I know, and that is a .NET site. GitHub is one of the fastest websites I know, while being the biggest hosting platform (it has over a million repositories after just over 2 years, that's more than SourceForge and Google Code combined) and it is written in Ruby on Rails for the frontend, Sinatra for the web service, Ruby for the Git interfacing and Git infrastructure, Erlang for the federation and cloud infrastructure and Node.JS for the download server.
Here's a start
Scaling ROR
Why Rails can run slowly
Framework Preformance Comparison
SO related question
Related interest article Twitter abandons ROR its old I know but I didnt actually know that lol
Short answer
Could potentially sure.
Might be more likely than some other languages.
Depends on the application, the programmer and the architecture.
As I see it - RoR is only a bit slower. At least slower than .Net, cause ruby is interpreted language.
But in general - it depends on quality of developers. RoR app that uses nice caching will work n times faster than .net/java app that loads half database into memory and sends plenty database requests cause of select n+1.
yes it is slower, but in production it will probably only hurt you once your load "exceeds a certain point" ("x requests/sec") and most sites never see more load than that.

How much effort would it take to build a web store in ASP.NET MVC?

Another slightly non-technical question, but I couldn't decide whether to ask here or on Server Fault...
I can't say I'm an MVC guru yet, but I've built several LOB applications so far in ASP.NET and WPF/Silverlight and am currently working on one in MVC 2, so I do know my way around for the most part. My concern is more about the accounting side of things.
It's easy to go wrong; for instance, I once got hired to fix a situation where reports on old transaction records were being calculated using new taxes. Obviously I know now to avoid that particular problem, but there's all sorts of other things as well, especially when international billing becomes involved.
There are packages like Magento and OSCommerce (the latter of which I've used with pretty good success) for PHP, but that's the thing -- they rely on the LAMP stack. Integrating it with the rest of the website could prove to be a real pain, especially if I end up having to host it on a separate Linux machine -- which I probably will. Juggling user accounts and styling and all that would be a killer.
A lot of the MVC tutorials out there are tutorials in building e-commerce sites -- which is pretty cool, but they're still just tutorials, and I doubt they cover all the issues.
Anyone have any experience in this area?
Edit: Commerce Server, at $7,000 per CPU, is out of the question for me, unfortunately.
Edit 2: Wait, it looks like Commerce Server's also available on TechNet... not sure if it's a commercial license though.
Actually, Google Checkout and Checkout by Amazon should work for me. Interestingly, they're practically identical services.

What framework would allow for the largest coverage of freelance developers in the media/digital marketing sector [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
This question is not about which is the best, it is about which makes the most business sense to use as a company's platform of choice for ongoing freelance development.
I'm currently trying to decide what framework to move my company in regarding frameworks for web application work.
Options are
ASP.NET MVC
Django
CakePHP/Symfony etc..
Struts
Pearl on Rails
Please feel free to add more to the discussion.
I currently work in ASP.NET MVC in my Spare time, and find it incredibly enjoyable to work with. It is my first experince with an MVC framework for the web, so I can't talk on the others.
The reason for not pushing this at the company is that I feel that there are not many developers in the Media/Marketing world who would work with this, so it may be hard to extend the team, or at least cost more.
I would like to move into learning and pushing Django, partly to learn python, partly to feel a bit cooler (all my geeky friends use Java/Python/c++). Microsoft is the dark side to most company's I work with (Marketing/Media focused). But again I'm worried about developers in this sector.
PHP seems like the natural choice, but I'm scared by the sheer amount of possible frameworks, and also that the quality of developer may be lower. I know there are great php developers out there, but how many of them know multiple frameworks? Are they similar enough that anyone decent at php can pick them up?
Just put struts in the list as an option, but personally I live with a Java developer, and considering my experience with c#, I'm just not that interested in learning Java (selfish personal geeky reasons)
Final option was a joke
http://www.bbc.co.uk/blogs/radiolabs/2007/11/perl_on_rails.shtml
As you said for the media/digital marketing sector php is the way to go.
I love .Net (it would be my first choice if the target market wasn't a factor).
I would really look for good well rounded developers regardless of their tech or market as opposed to ones with "media/digital marketing sector" experience.
It is possible to find good/experienced/reliable developers with knowledge of multiple frameworks. If this is a requirement, it is of course possible to vet candidates accordingly.
Given that you're referring to freelance development, it would probably make sense to add the dimension of "where the developer is based" into your thinking, as dealing with someone who's a stone throw's away compared to dealing with someone abroad or another city may affect how you work together. This means that where you are based also affects your choice: if you're based in a small town, there will be less quality canditates close to you with suitable skill sets.
I'm currently learning Symfony for myself, and work as a freelance advisor/product developer for a site that's built with CakePHP. Although an experienced PHP developer should be able to make the leap from one of the above to the other quite quickly, there's a fair amount of framework-specific intricacies that can only really be learnt by coming across the problem and then searching for the solution, or by being guided by someone who already knows. Symfony is considered to have good documentation, but I feel that there's a quite a lot in it that's also not in the documentation and that can really only be learnt by doing it.
I also worked for a company quite recently who used Symfony, hired high-quality PHP developers only, and if I recall correctly, it was about a month or two for new guys to get familiar with the code and the workings of Symfony, and start becoming properly productive.
Hope that helps.
In my (heavily biased) opinion, Django is gaining some traction in this sector. Off the top of my head I can think of a number of high-profile news organizations that are making significant use of Django and I've seen reports of organizations utilizing Django for putting up special one-off sites quickly for unique coverage of special events or circumstances. I know firsthand that PBS and National Geographic also use Django extensively for their web properties and I understand Discovey Channel does as well. There is a nice testimonial about how Michael Moore's site was rebuilt quickly using Django: http://blog.concentricsky.com/2009/10/michaelmoore/. I'm not sure if MSNBC has begun utilizing Django internally, but they did acquire Everyblock.
A few others I'm aware of that use Django heavily:
Mahalo
NASA
University of Texas
I've also seen that Django is being used by startups outside the media sector so I wouldn't say it is specialized toward a particular business sector. There are a lot of organizations out there that have been sort of silently using Python internally over the years and so Django is quickly becoming a natural option for web-based services. Python actually has decent roots in the scientific communities, financial sector, and I've spoken with a number of people in the entertainment industry who use Python in their digital effects / post production pipelines.
Maybe not the most riveting content overall, but there is some good info in here: http://djangocon.blip.tv/file/3041158
Look at your clients. Frameworks are just tools, you will have to go with the tool that suits the particular job. This also means your choice to dive into a framework will choose your future clients.
Many SMB shops need PHP because that it is the easiest to host and is interoperable on many layers of "platform" (not just OS, but also supports all DBs etc.)
ASP.NET MVC: I heard a lot of awesomeness about it, I like C# as well. But I can't afford to go only with the options Microsoft provides (database for example) and Microsoft products only really support they own stuff.
Django: Expected to gain huge momentum, but I'll wait until the language itself (syntax) becomes stable.
CakePHP/Symfony: CakePHP is very easy to pick up and is a good choice if it fits all the requirements.
Struts: Quite heavy, I would learn Spring (MVC) instead.
Pearl on Rails: Haven't really used/seen it, so no idea.
You could also consider to learn a framework that is radically different from you current knowledge.
So I love Symfony. It does all I need for a Framework to work fast and clean.
The structure and the architecture is pre-defined so everybody knows where to put stuff, so you can easily work together with a whole bunch of developers.
I would never chose CakePHP over Symfony, because if you have to make changes to a model, you can never again generate code after the development has started.
CakePHP just overwrites everything.
I sure lost all my code a few times. Really annoying.
Symfony just extends the generated code and that is where you develop.
Here you find a good discussion about CodeIgniter (with which I develop at the moment, and it is no MVC and PHP4-based) and Symfony: codeigniter-vs-symfony
The learning curve is a bit steeper for Symfony, but it has enough complexity for all situations I ever encountered.
My next project will again base on Symfony 1.4. And if you can wait, there will soon be Symfony 2.0
ASP.NET MVC, but only if you can use both a frontend and a backend developer for each project. It'll probably be harder to find developers with both competences and you might have to push .net-developers a bit to get them to use MVC.

Resources