Альтернатива sun.misc.Signal

Если вам нужна быстрая скорость чтения, лучшим вариантом является использование таблицы закрытия. Таблица закрытия содержит строку для каждой пары предков / потомков. Итак, в вашем примере таблица закрытия будет выглядеть как

ancestor | descendant | depth
0        | 0          | 0
0        | 19         | 1
0        | 20         | 2
0        | 21         | 3
0        | 22         | 4
19       | 19         | 0
19       | 20         | 1
19       | 21         | 3
19       | 22         | 4
20       | 20         | 0
20       | 21         | 1
20       | 22         | 2
21       | 21         | 0
21       | 22         | 1
22       | 22         | 0

. После того, как у вас есть эта таблица, иерархические запросы становятся очень легкими и быстрыми. Чтобы получить всех потомков категории 20:

SELECT cat.* FROM categories_closure AS cl
INNER JOIN categories AS cat ON cat.id = cl.descendant
WHERE cl.ancestor = 20 AND cl.depth > 0

Конечно, существует большой недостаток, когда вы используете денормализованные данные, подобные этому. Вам нужно поддерживать таблицу закрытия рядом с таблицей категорий. Лучший способ, вероятно, использовать триггеры, но несколько сложно правильно отслеживать вставки / обновления / удаления для таблиц закрытия.

Редактирование: см. Вопрос Какие существуют варианты хранения иерархических данных в реляционной базе данных?

g0] для получения дополнительных опций. Существуют различные оптимальные решения для разных ситуаций.

30
задан Community 23 May 2017 в 10:30
поделиться

2 ответа

Если вы не можете принять какую-либо вероятность того, что sun.misc.Signal может измениться в недавнем будущем, просто реализуйте обработку сигнала самостоятельно, с помощью интерфейса JNI, на языке, который компилируется в машинный код (например, C), и импортируйте библиотеку с помощью System.load. Используя JNI, java может использовать C, а C может использовать java. В первый раз, когда я использовал JNI, мне показалось забавным иметь возможность использовать весь Java-API из моей C-программы.

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

0
ответ дан Brenda.ZMPOV 23 May 2017 в 10:30
поделиться

Лучше всего отказаться от сигналов, поскольку они плохо поддерживаются.

Альтернативы для IPC:

  • Сокеты (включая веб-сервисы, JMS и т. Д.)
  • Блокировка файлов
  • Файл сопоставления памяти
-8
ответ дан Jon B 23 May 2017 в 10:30
поделиться
Другие вопросы по тегам:

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