title: NoSQL (e.g. MongoDB) or RDMS (e.g. PostgreSQL) for new Scala project?
body: <p>I'm developing a brand new project in Scala. It's just an application for a bunch of CRUD operations, however, because of some eccentric requirements, Play2 or Lift does not fit the bill, so I'm going to develop the application from the ground up. This means that Anorm or ScalaQuery becomes less obvious choices for database integration, and leaves me with the question: is it time to try something new?</p>
  
  <p>My past technology stacks mostly included Java and PostgreSQL and I have experience with both ORM and plain SQL. Are NoSQL database management systems like MongoDB a good replacement for a typical RDBMS or are they special case application data stores? Also, how does the choice of database effect the greater Scala system design (if at all)? For example, the fact that you are using a JSON-like interface to talk to the database, and JSON between the web and a REST service, does not mean that much if everything in the middle becomes Scala objects, or does it?</p>
  
  <p>I'm basically asking for someone's experience on moving from relational to object/document type databases, using Scala in particular. I know that good RDBMS integration is promised in the upcoming release of SLICK. So, if a company like TypeSafe decides to make a RDBMS integration part of the TypeSafe stack, then will I be swimming upstream by integrating to MongoDB using Casbah for example?</p>
  
  <p>Apologies if this question appears a bit vague. I do hope that someone with the right insights or experience will be able to help though.</p>
  
  <p><em>Update:</em></p>
  
  <p>Apologies for not adding links to SLICK (it being fairly new). Here goes:</p>
  
  <ul>
  <li><a href="http://days2012.scala-lang.org/node/390" rel="noreferrer">Quick overview</a></li>
  <li><a href="https://github.com/slick/slick" rel="noreferrer">Project home</a></li>
  </ul>
  
  <p>Update 2:</p>
  
  <p>My personal first win for a technology is usually <em>developer productivity</em> - this translates to lightweight and simple: quick to learn, easy to maintain, no magic</p>