Я создаю СУБД (в основном программное обеспечение, обрабатывающее SQL-запросы) строго для удовольствия и как опыт обучения. И мне нужно знать лучший способ разделить значения и строки.Лучший способ разделить значения в большом плоском файле
Для конфигурации таблицы я использую XML, так как это хороший способ хранения информации. Хотя это не может быть сделано со всеми вставленными строками, так как все теги xml будут занимать много памяти. Я также думал о сериализации всех объектов, представляющих базу данных (как я использую Java) для хранения данных, но я предполагаю, что это тоже займет много памяти.
Итак, единственное, что я мог придумать, это использовать разделитель значений и разделитель строк для получения минимального объема памяти. Хотя проблема с разделителями как с одиночными символами (если я использую multicharacter, я могу использовать XML), это проблемы, если этот разделитель находится в одном из значений. Поэтому я подумал, могу ли я использовать шестнадцатеричный символ без прикрепленного символа. Это существует? И если да, то это хороший подход? Одна из проблем заключается в том, что в будущем я буду запускать BLOB. Они содержат двоичные данные и могут содержать мой разделитель значений. Какое это лучшее решение?
Скажите, что вы думаете! Я открыт для обсуждения. Кроме того, если кто-нибудь знает, как MySQL (или какой-либо другой широко используемый механизм SQL) хранит данные, это может быть интересно.
Новая идея, которую я получил
Что делать, если вы можете прочитать всю таблицу в TreeSet загружены с различными компараторами на основе того, что вы ищете в/заказ на. Тогда поиск будет одинаково быстрым, что бы вы ни искали. Недостатком этого является, конечно, что весь файл должен быть записан в объекты, которые помещены в TreeSet, может быть много ОЗУ. Как вы думаете?
Какую СУБД вы создаете? Является ли он реляционным, с данными, хранящимися в таблицах с фиксированной схемой, или что-то еще? – Joni
Это отношение к таблицам, как и MySQL. Хотя у меня есть планы на будущее по созданию вложенных результатов, поэтому столбец, ссылающийся на строку в таблице diffrent, будет содержать строку из другой таблицы. Но данные все еще хранятся в таблицах. – SiXoS
Начните с структур данных, которые необходимо сохранить и загрузить данные в записи, а затем подумайте, чтобы оптимизировать поиск данных с помощью построения индексов дерева b. –