Я рассчитываю распространить некоторую информацию на разные машины для эффективного и чрезвычайно быстрого доступа без каких-либо перегрузок в сети.Данные существуют в реляционной схеме, и это требование «присоединяться» к отношениям между сущностями, но это вовсе не требование записи в базу данных (они будут созданы в автономном режиме).
Iу меня была большая уверенность, что SQLite обеспечит производительность, но RDMBS кажется непригодным на фундаментальном уровне: объединения очень дороги из-за стоимости поиска по индексу, а в моем контексте только для чтения - ненужные накладные расходы, где объекты могут хранитьпрямые ссылки друг на друга в виде файловых смещений.Таким образом, поиск по индексу переключается для поиска файла.
Какие у меня варианты здесь?База данных действительно не описывает то, что я ищу.Я знаю о Neo4j, но не могу встроить Java в свое приложение.
TIA!
Редактировать, чтобы ответить на комментарии:
- Данныебудет иметь размер до 1 ГБ, и я использую PHP, поэтому хранение данных в памяти не является возможным вариантом.Я буду полагаться на буферный кеш ОС, чтобы избежать постоянного перехода на диск.
- Примером может служить таблица Product с 15 полями смешанного типа и запросом для перечисления продуктов с определенной маркой, объединяющихся в таблицу Category.
- Решением должен быть какой-то плоский файл.Мне интересно, существует ли уже какое-либо программное обеспечение, которое отвечает моим потребностям.
@ Марк Уилкинс:
Проблема производительности измеряется.По сути, в моей ситуации недопустимо заменять запрос 2 мс, связанный с вводом-выводом в Memcache, вызовом 5 мс, привязанным к ЦП, в SQLite ... Например, таблица категорий содержит 500 записей, содержащих родительские и дочерние категории.Следующий запрос занимает ~ 8 мс без дискового ввода-вывода: ВЫБЕРИТЕ 1 ИЗ категорий a ВНУТРЕННИЕ СОЕДИНЕНИЯ категории B на b.id = a.parent_id.Некоторые более простые запросы без объединения выполняются очень быстро.