Как сохранить json в качестве реляционных данных в таблице Oracle из java в качестве столбца?

Чтобы увеличить ответ Фрэнка, можно также захватить самые последние записи - даже если вы не потрудились упорядочить их с использованием приоритетов - просто используя endAt().limit(x), как это demo :

var fb = new Firebase(URL);

// listen for all changes and update
fb.endAt().limit(100).on('value', update);

// print the output of our array
function update(snap) {
   var list = [];
    snap.forEach(function(ss) {
       var data = ss.val();
       data['.priority'] = ss.getPriority();
       data['.name'] = ss.name();
       list.unshift(data); 
    });
   // print/process the results...
}

Обратите внимание, что это довольно показательно даже до тысячи записей (при условии, что полезная нагрузка мала).

Эта грубая сила также может быть оптимизирована для работы с большими данными или большими записями, выполняя такие функции, как мониторинг child_added / child_removed / child_moved вместо value и используя debounce для применения обновлений DOM навалом, а не отдельно.

Обновления DOM, естественно, являются стервой независимо от подхода , как только вы попадаете в сотни элементов, так что подход debounce (или решение React.js, который по сути является debub uber) - отличный инструмент для работы.

0
задан joseph francis 13 July 2018 в 13:51
поделиться

1 ответ

Нужно будет узнать больше подробностей о вашем полном прецеденте.

Но, в общем, у вас есть два варианта:

(1) Вы можете использовать SODA Java. Это создаст коллекцию. Под обложками коллекция поддерживается обычной таблицей, которая будет иметь столбец идентификатора (для ключа) и столбец JSON_DOCUMENT для содержимого JSON (по умолчанию имена столбцов могут быть изменены по желанию через метаданные пользовательских коллекций, переданные createCollection). Эта базовая таблица таблиц также видима / доступна из SQL. По умолчанию JSON_DOCUMENT представляет собой BLOB, но через метаданные пользовательской коллекции вы можете запросить хранилище VARCHAR2 или CLOB. Это очень легко сделать в нескольких строках кода.

См. Пример для начала работы: https://github.com/oracle/soda-for-java/blob/master /doc/Getting-started-example.md

SODA в основном дает вам абстрагирование коллекций документов NoSQL, и с ним очень легко работать с Java. Это избавляет вас от необходимости кодировать SQL поверх JDBC и обрабатывать вещи низкого уровня, такие как переменные связывания и т. Д.

(2) Если SODA не является правильной абстракцией для вашего прецедента, вы можете использовать JSON поддержка в Oracle и JDBC (это именно то, что SODA использует под обложками). Вы должны создать обычную таблицу со столбцом для идентификатора и столбцом для JSON. При определении этой таблицы вы помещаете ограничение «is json» в столбец JSON. Столбец JSON может иметь тип BLOB (рекомендуется), VARCHAR2 или CLOB. С BLOB, в отличие от VARCHAR2, размер JSON не ограничивается 32k, а конверсии кодирования исключаются.

Затем вы связываете / извлекаете данные JSON, как обычно, с JDBC (точно так же, как обычно связывать / извлекать данные, отличные от JSON, в / из BLOB / VARCHAR2 / CLOB, ничего не меняется). Вы можете использовать различные JSON-операторы (json_value, json_table и т. Д.) В ваших SQL-запросах, которые вы выдаете через JDBC, чтобы работать со своими данными JSON.

0
ответ дан Max Orgiyan 17 August 2018 в 12:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: