NoSQL DB for .NET Document Based Database (ECM)

I'm halfway through coding a basic Multi-tenant SaaS ECM solution. Each client has its own instance of the database / data store, but the .Net application is the only instance. The documents are pretty much readable (i.e. Tiffs Image Archive or PDF)

I've used MSSQL so far, but then started thinking that it might be viable in a NoSQL database (e.g. MongoDB, CouchDB). The basic premise is that it stores documents, each with its own specific indexes. Each tenant can have several types of documents.

eg. One tenant can have an invoice type that has a customer ID, an invoice number, and an invoice date. Another tenant might have a ticket that has a member number, application number, member name, and application date.

So far I have used the old method that Sharepoint was using (used?) And created a document table that has int_field_1, int_field_2, date_field_1, date_field_2, etc. Then I have a mapping table that stores the name of a specific customer and the database field to map to. I have avoided the key-value pair in the DB due to the length of the paperwork.

Thus, we can support several types of documents in one table and get quite high performance from it and allow searches by the type of the custom type (for example, the user selects the type of document, then he is presented with a list of the search field).

However, NoSQL DB can make this much easier since I don't have to worry about denormalizing the document. However, I was just worried about the rest of the data around the document. We keep a "history of actions" against the document. This keeps track of views, whether someone is e-mailing the document from the system, and other "future" functionality (such as sending faxes).

We have control over the document loading process, so we can manipulate the data, however it must be in order to get it into the document store (for example, assign unique IDs). Users won't add their own documents, so we don't need to worry about ACID compliance as the documents are relatively static.

So my questions I assume are:

  • Is the NoSQL database suitable.
  • Is MongoDB the best for Asp.Net (I've seen Raven and Velocity, but they're still good ones).
  • Is it possible to save a key for each document and then save the action history in MSSQL DB using that key? I don't need to make connections, it will be if the person clicks "View History" on the document.
  • How would I compare performance between the two (NoSQL DB table and denormalized "document")

Volumes can be up to 200,000 new documents per month for one tenant. My current scaling plan with SQL DB involves moving the SQL DB into the cluster when certain thresholds are hit, and then looking at the partitioning and indexing structures.

+2


a source to share


1 answer


Answer:



  • For the document oriented parts, and probably everything, the nosql solution should work fine.
  • I've played with and heard good things about mongodb and will probably recommend it for a .net project first.
  • For the document oriented part, the performance should be excellent compared to sql database. for a smaller scale, it should be equivalent, but the ability to scale later would be a huge benefit.
+2


a source







All Articles