1. A method 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, wherein the method is performed by one or more computers.