I will be building a custom application and I need to make a decision on a method of data storage for it. The requirements of this project are:
1) Thorough write-up on the best method of data storage or database for this application.
- Reasons why this is a good method
2) Give some input on how this database should be made (Within write-up)
This is a consulting project and I am seeking a very informative response.
The application will run on Laptop computers within our office which have access to a fileserver. This data base will be stored on the fileserver while the application will be running locally on the laptops. All information from each user needs to be accessible at all times by each other user. This is why everything is centralized to the fileserver. It also means that multiple users may be trying to view/access the same information simultaneously. Im not sure how this looks and I will need insight on this. However, it’s important that all users are able to access each others data concurrently. The application will be running on both Windows and Mac computers.
There will be multiple modules for this application. It is important that when a new module is added in the future it will not be excluded from storing information and accessing already existing content. It will need to be able to save information and access information from the database as if it came with the original application.
Examples of information being stored initially:
Module 1) Contacts information (Rolodex)
- Contacts imported from Outlook (name, address, etc)
- This Includes the “picture” field as well (important because I do not know the best method of accounting for a picture file within a data base of contacts).
Module 2 ) Calendar information
- This calendar will be interactive and users will be able to add information to each others calendars (setting appointments between people, etc)
Module 3) Blogging module
- We will be using a blogging module for collaboration purposes. People can add ideas and some short responses and some write-ups as well. This txt will need to be stored centrally as well. It can get a little long, possibly up to 1000 words. The blogging module will need to be able to access the 1st module (contact module). So you can see, these need to be able to get information from all areas of the application.
These laptops will occasionally be taken outside of our office, have no internet connection, and need to still be able to function. Meaning some degree of local storage will be utilized so the user is still able to work when he/she has their computer disconnected from “The network”. When the laptop returns, the database will need to resync. This way, someone could add some information for a user who’s out of the office and when he/she returns it will sync to their computer. (Calendar and appointments are what comes to mind here).
Size and speed are high priorities. I would like to minimize the amount of data transfer on the network. So if this means not even having a conventional database, but instead a log file for each user which will instead indicate what files have been revised since the previous sync than so be it. Regardless of this though, a thorough explanation of the best method will need to be written for me. Some development advice would be appreciated as well.
I invite all to bid and give insight for this project. Thank you for your time and consideration.