Autodesk Revit has the ability to export to a relational database structure through its existing toolset.
But, for Revit itself, is it structured with a non-relational database, as the API has each project being represented as a 'Document'?
I do not know and I do not care, since the only way to interact programmatically with the Revit database and its elements and properties is via the Revit API.
You can't say exactly what the Database behind Revit is but I can say some of its configs are on XML format (some are in C:\Program Files (x86)\Common Files\Autodesk Shared\Revit Shared\Ashrae for Mechanical and so on) and so many other Databases .and you can't say exactly it's relational or non-relational.
Related
We have a sharepoint website and as part of functional process across the website where there are lot of documents been uploaded. Currently they are been stored into database which results in very bulky table in terms of size. My initial approach was to utilize sharepoint to store the documents into file library. Does anybody think database is the wiser options and why or any other approach which is performant and better to store confidential files?
Using a database for storing documents is not a recommended approach, not only it will have large size but will be hard when it comes to maintenance and performance.
If you have a SharePoint server, why not go with a library or multiple libraries to store documents. You will get the below advantages when using SharePoint.
1.Permission management : you can set up access to documents and choose who access what.
2.Search : if there is a search service running you can search through your libraries.
3.OWA : office web apps can be used to open documents on the browser.
4.Audits : You can enable audit logs to see who does what.
Remember, SharePoint is a CMS and there are other options like MMS etc, but it stores the documents in a database too, its designed well so you dont have to worry much about it. If you go with your custom solution you will have to do a lot of custom development and testing.
I never recommend saving files in the database. The easiest approach is to store them on the server in a directory and only save the file names in the database. This makes it easy to show them via a URL in a browser as well. Create a table with a column for the OriginalFileName and one for the ActualFileName. When i save a file to the server after its uploaded i usually change the name so you never have complications with duplicate file names. I use a GUID as the actual file name when its saved and save the original file name in the database along with the actual so you can get both back.
I have a backup of couchdb design documents from an old project. I'm trying to work with this data but I'm not sure what format they are in. Does anyone know? I have a feeling it might be BSON.
It depends on how you made the backup, but CouchDB uses plain JSON, not BSON (which is MongoDB-specific). If you are talking about the database files CouchDB stores (ending with .couch), these are opaque to the user. If you have a running CouchDB instance (a version < 2.0 is easiest), then you can just put the file in the data folder, and it should be visible in Futon.
You can then backup the design documents to text files - you find more information about tools for backing up CouchDB in this IBM Cloudant blog post.
I was looking for a conceptual structure of Revit models. I found the following graph which seems to be from 2009. I wonder if it is still valid.
Yes, that is still a (very nice and) valid representation of the main Revit database structure.
Thank you for sharing that!
Here is a Revit 2010 API class diagram:
http://thebuildingcoder.typepad.com/blog/2012/01/no-revit-api-class-diagram.html
However, it has not been officially updated since then. You can use the built-in Visual Studio tools to navigate through and explore the class structure at need:
http://thebuildingcoder.typepad.com/blog/2015/03/split-personality-and-revit-api-class-diagram.html#3
I don't know about SharePoint that much, so hope that someone can give me some good explanations for me.
For SharePoint application, we don't need to consider SharePoint DB design? Everything is done through List and SharePoint will take care of the Database? Don't need to consider it at all unless we are connecting to the external Database?
For Parent Child relationship, I have to use lookup field?
If we are developing using Web parts, we need to deploy it using Features. So eventually, there can be so many features in the production? Is it recommended in this way?
1)
For SharePoint application, we don't need to consider SharePoint DB
design ? Everything is done through List and SharePoint will take care
of the Database ? Don't need to consider it at all unless we are
connecting to the external Database ?
You do need to consider the database... In term of administration. back ups, restore, size and so on.
however you never directly read or write to it. You don't need to pay attention to the schema because you won't ever be directly using it. If you want to update something in SharePoint you do it pragmatically with c# / vb.net using the SharePoint API's. You have 2 API's one that works on the server called the SharePoint object model and one that works on a remote machine called the client side object model.
From a users perspective, you are correct lists contain data in SharePoint and are somewhat smiler to DB tables in some ways.
2)
For Parent Child relationship, I have to use lookup field ?
Yip
3)
If we are developing using Web parts, we need to deploy it using
Features. So eventually, there can be so many features in the
production ? Is it recommended in this way?
This can happen if you create a new solution for every web part but you can bundle multiple web parts in the same solution in the same project in the same feature
Right click on your project --> add new item. select a web part. By default the web parts will all be part of the same feature but you can separate them out and have multiple features in the same solution if you want to
In a SharePoint document library, is there any way to store the documents on the file system instead of the database?
You can make SharePoint store its documents outside the DB using the SharePoint External Storage API. In other words, this isn't some functionality accessible through the SharePoint interface, but the system does offer a way of building it yourself. There are third party providers like StoragePoint that will do the job for you.
Documents in a SharePoint document library will always be hosted in the database. That said, you can access the files with a UNC path that masks the fact that they are stored in the database.
\\url\sites\yoursite\folder\
You could also write a custom solution (workflow?) that copies the files into a standard file system once they are added to a document library.