私は DBMS (基本的には SQL クエリを処理するソフトウェア) を厳密に楽しみと学習体験として作成しています。そして、値と行を分離する最良の方法を知る必要があります。
テーブルの構成には、情報を格納するのに適した XML を使用します。ただし、すべての xml タグが多くのメモリを占有するため、挿入されたすべての行でこれを行うことはできません。また、データベースを表すすべてのオブジェクトをシリアル化して (Java を使用しているため) データを格納することも考えましたが、それも大量のメモリを消費すると思います。
したがって、私が考えることができる唯一のことは、値の区切り記号と行の区切り記号を使用して、最小限のメモリを占有することでした。セパレーターを単一文字として使用する場合の問題 (複数文字を使用する場合は XML を使用することもできます) は、そのセパレーターが値の 1 つにある場合に問題が発生することです。そこで、記号を付けない 16 進数の文字を使用できないかと考えました。それは存在しますか?もしそうなら、それは良いアプローチですか?1 つの問題は、将来、BLOB を許可するようになった場合です。それらにはバイナリデータが含まれており、値の区切り記号が含まれている可能性があります。これに対する最善の解決策は何ですか?
あなたの考えを教えてください!私は議論のために開いています。また、MySQL (またはその他の広く使用されている SQL エンジン) がどのようにデータを保存するかを知っている人がいれば、興味深いかもしれません。
私が得た新しい考え
検索対象/順序に基づいて、さまざまなコンパレータがロードされた TreeSet にテーブル全体を読み込むことができるとしたらどうでしょう。そうすれば、検索は何を検索しても同じように高速になります。もちろん、これの欠点は、ファイル全体を TreeSet に配置されるオブジェクトに書き込む必要があり、大量の RAM になる可能性があることです。どう思いますか?