Distributed Database Client-Side Indexing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional database systems either push the complexity of indexing and querying onto application developers, consuming additional memory resources, or add a layer of abstraction that compromises performance by separating records from database clients.
Innovation Solution
A distributed database system with a layered software stack that includes a hardware abstraction layer, runtime layer, management layer, and interface layer, utilizing shared memory regions and replication clients to manage data records and maintain data coherency across multiple processing nodes, allowing each client process to have a unique perspective on data records through different abstract data structures.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If database systems use internal keys for indexing records, then record retrieval is enabled, but additional memory resources are consumed
Solution Approach 1:
The patent extracts the indexing function from the database system itself and relocates it to client processes. Each client maintains its own abstract data structure (such as a hash table or tree) that maps keys to record locations in shared memory. This eliminates the need for the database to store and manage internal keys, freeing up memory resources while maintaining fast retrieval through client-side indexing.
Solution Approach 2:
The patent introduces abstract data structures as intermediary components between clients and the shared memory database. These data structures serve as local indexes that mediate between client queries and the actual data records in shared memory, enabling efficient key-based retrieval without requiring the database to maintain global indexing structures.
2Adaptability or versatility
If database contains knowledge of internal representation to perform complex queries, then querying capability is improved, but performance deteriorates due to added abstraction layer
Solution Approach 1:
The patent segments the database system into distinct functional components: the shared memory database stores raw data records without interpretation, while client processes maintain abstract data structures tailored to their specific querying needs. This segmentation allows each client to optimize its own query performance for its particular workload without imposing a universal abstraction layer on the entire system.
Solution Approach 2:
The patent applies local quality by allowing each client process to have its own customized abstract data structure with properties optimized for that client's specific requirements. Different clients can use different data structure types (hash tables, B-trees, etc.) and different key schemes based on their individual querying patterns, rather than forcing a one-size-fits-all approach.
3Productivity
If multiple client processes access shared memory database, then system scalability is improved, but data coherency becomes difficult to maintain
Solution Approach 1:
The patent implements feedback mechanisms through version vectors or timestamp-based validation that allow client processes to detect and resolve conflicts when accessing shared records. When a client reads a record, it receives version information; subsequent writes from other clients can be detected through version mismatches, triggering appropriate conflict resolution protocols that maintain data coherency across the distributed system.
Solution Approach 2:
The patent applies preliminary action through optimistic concurrency control where clients perform reads and writes without immediate locking, but validate their operations against version information before committing changes. This preliminary validation approach allows high concurrency and scalability while ensuring that only coherent data states are committed to shared memory.
Data Source
AI summary
A technique for storing a plurality of data records in a database. Client processes link to the database to access the data records of the database. Each client process has a specified scope. The scope defines to which of the data records within the database each of the client processes has access.


