Sicher. Aber verwenden Sie dieses Konzept nicht in einer ereignisgesteuerten Echtzeit-Datenbanklösung und versuchen Sie es zu patentieren - ich habe das vor Ihnen gefunden.
Jeder Datensatz ist ein Array von Objekten, ein Element pro Feld, in einem Datensatzobjekt eingeschlossen.
Es gibt ein Wörterbuch pro Tabelle, das die Namen der Felder als Schlüssel und deren Indizes in den Datensatzfeldern als Werte enthält.
Erstellen Sie ein Wörterbuch pro Tabelle für die Primärschlüssel, wobei der Primärschlüssel der Schlüssel und der Datensatz/Array der Wert ist.
Erstellen Sie eine eindeutige Sprungliste für jedes indizierte Feld (Balanced binary trees sind nicht duplikatfreundlich). Der Schlüssel ist der Feldwert. Der Wert wird der Datensatz/das Array sein. Das Datensatzobjekt enthält eine Referenz für seinen Auslistknoten für jeden der Indizes in der Tabelle.
Alle diese in einem Tabellenobjekt einkapseln. Die Tabellenobjekte werden in einem Wörterbuch gespeichert, wobei der Schlüssel ein Tabellenname und der Wert das Tabellenobjekt ist. Dieses Wörterbuch wird in einem Datenbankobjekt enthalten sein.
Machen Sie die Tabellen- und Datenbankobjekte mit Lambda-Ausdrücken und möglicherweise vollständigem LINQ abfragbar. Möglicherweise müssen Sie einen SQL-Textparser schreiben, aber nach all den anderen Arbeiten wird es ein Kinderspiel.
Wenn Sie fertig sind, Herzlichen Glückwunsch! Sie haben das Rad neu erfunden! Aber manchmal brauchst du nur ein Custom-Rad. Ich bin gerade dabei, dieses Konzept selbst zu implementieren, nur mit viel mehr Twists (wie Compound-Keys und volle Constraint-Unterstützung).
Ich kann nicht sehen, wie die Indizierung Ihnen erlauben würde, SQL zu verwenden. Indizes als solche sind keine wesentliche Voraussetzung für eine SQL-Datenbank. –
Können Sie vielleicht einen Hinweis auf das von Ihnen erwogene Schema und auf die Art der Abfragen geben, die Sie ausführen möchten? –
Fragen Sie, wie Sie die SQL-Syntax in einer NoSQL-Datenbank verwenden? – jva