Судя по описанию- собрались написать СУБД. Сама ОС(операционная система) предоставляет доступ к диску через файлы и через блоки. Т.к. файл является совокупностью блоков, то можно хранить в памяти сами измененные блоки и там же их менять. Т.е. вам необходимо уже есть в апи самой ОС.
З.Ы.: И все же, я бы не рекомендовал писать свою СУБД и для простоты все же взял уже готовую. Посмотрите хотя бы в сторону SQLLite тем более, что ее можно запустить в режиме "in memory".
Первое что мне приходит в голову, если обязательно нужен power BI:
1. На одной из БД сделать дблинк на вторую, и подключаться к ней и через нее грузить данные из 2й БД(можно сразу вью сделать).
2. Или еще проще поставить себе постгрес какой-нибудь и сделал там по дблинку на каждую из баз. А power BI натравил уже на постгресс.
Под ваше описание программы подходит sql-запрос, где таблица с ситуациями, есть таблица с ключевыми словами, с внешним ключом из таблицы ситуаций. И по ключевым словам выбираем ситуации.
Здравствуйте, а где изменения хранятся? Не совсем очевидно на схеме отображено. В таблицах overvalue и liquidity идет вставка или обновление значений? Есть ли логирующие таблицы на overvalue и liquidity?
Я считаю, что для задач оптимизации нужно в первую очередь здравый смысл, во-вторую понимание планов запросов и структуры БД, и конечно же знание архитекруты и особенностей той конкретной СУБД(на уровне плохого админа) и не хилые аналитические способности. Проблемы не столь очевидны, по крайней мере я с такими не сталкивался с проблемами, где, к примеру, дописав хинт все становиться отлично, и решает знание, как функционирует БД(как происходит соединение наборов данных и больше об арсенале этой конкретной используемой БД) и практика.
В общем, смысл разбить есть:
-для правильности и нормальной формы
-OLAP-куб(нужна снежинка)
Опять же повторю, не обращая внимание на многие "ЕСЛИ" читать проще и быстрее с одной таблицы.
Индекс на sku попробуйте.
create INDEX index_name ON table_name ((column_name ->> 'sku'));
SELECT * FROM table_name WHERE (column_name ->> 'sku') = 735215;
Albert Kazan, https://chartio.com/resources/tutorials/left-and-r...
Чтобы были запросы идентичны надо первый запрос написать вот так:
SELECT d.id, d.author_id, d.msg, d.added_time, u.name AS author_name
FROM discussion_messages AS d, people AS u
WHERE u.id(+)=d.author_id AND d.discussion_id=?
Или поменять второй запрос на
SELECT d.id, d.author_id, d.msg, d.added_time, u.name AS author_name
FROM discussion_messages d
JOIN people u ON u.id=d.author_id
WHERE d.discussion_id=?
Одно из 2х.
З.Ы.: И все же, я бы не рекомендовал писать свою СУБД и для простоты все же взял уже готовую. Посмотрите хотя бы в сторону SQLLite тем более, что ее можно запустить в режиме "in memory".