Чтобы увеличить ответ Фрэнка, можно также захватить самые последние записи - даже если вы не потрудились упорядочить их с использованием приоритетов - просто используя 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) - отличный инструмент для работы.
Нужно будет узнать больше подробностей о вашем полном прецеденте.
Но, в общем, у вас есть два варианта:
(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.