7. A system comprising: one or more computer processors; and a non-transitory storage medium coupled to the one more computer processors and storing instructions operable to cause the one more computer processors to perform operations comprising: receiving, for inserting into a database, structured data and unstructured data, the structured data including data for storing in the database as one or more data records, the unstructured data including an electronic document; recording an insertion event, including inserting a first data record corresponding to the structured data into an event data structure and inserting a second data record corresponding to the unstructured data into the event data structure; determining, using an indexing agent that monitors the event data structure for the insertion event, a combined index for the structured data and unstructured data, wherein determining the combined index comprises: determining, by the indexing agent and storing in a collection data structure, a record for the structured data upon detecting an insertion of the first data record into the event data structure; determining, by the indexing agent and storing in a document data structure, a record for the unstructured data upon detecting an insertion of the second data record into the event data structure; the document data structure comprising a document table and a file table, the document table comprising a file identifier data field for storing a foreign key to the file table, the file table comprising a tenant specific data table for storing information for unstructured data uploaded by the tenant, the tenant being a work group including one or more user computers; and determining the combined index based on the record in the collection data structure and the record in the document data structure; and providing the combined index to a search module for performing a search in the structured data and unstructured data.
7. A system comprising: one or more computer processors; and a non-transitory storage medium coupled to the one more computer processors and storing instructions operable to cause the one more computer processors to perform operations comprising: receiving, for inserting into a database, structured data and unstructured data, the structured data including data for storing in the database as one or more data records, the unstructured data including an electronic document; recording an insertion event, including inserting a first data record corresponding to the structured data into an event data structure and inserting a second data record corresponding to the unstructured data into the event data structure; determining, using an indexing agent that monitors the event data structure for the insertion event, a combined index for the structured data and unstructured data, wherein determining the combined index comprises: determining, by the indexing agent and storing in a collection data structure, a record for the structured data upon detecting an insertion of the first data record into the event data structure; determining, by the indexing agent and storing in a document data structure, a record for the unstructured data upon detecting an insertion of the second data record into the event data structure; the document data structure comprising a document table and a file table, the document table comprising a file identifier data field for storing a foreign key to the file table, the file table comprising a tenant specific data table for storing information for unstructured data uploaded by the tenant, the tenant being a work group including one or more user computers; and determining the combined index based on the record in the collection data structure and the record in the document data structure; and providing the combined index to a search module for performing a search in the structured data and unstructured data. 8. The system of claim 7 , wherein receiving the unstructured data includes: receiving an input to insert the unstructured data into a table of the database; and in response to the input: storing the unstructured data separate from the database; extracting metadata of the unstructured data; and inserting the metadata and a document reference that refers to the stored unstructured data into the table of the database.