Выведите тело функции или процедуры в sqlplus

Одно то, что у меня есть aways, найденный забавным, - то, что Google на самом деле выполняется биоинформатикой (’kay, я нахожу это забавным, потому что я - bioinf†¦ штука). Позвольте мне объяснить.

Биоинформатика вначале имела проблему искать мелкие тексты в гигантских строках очень быстро. Для нас “gigantic string” является, конечно, DNA. Часто ни один DNA, но база данных нескольких ДНК от различных разновидностей/людей. Мелкие тексты являются белками или их генетическим дубликатом, геном. Большая часть первой работы специалистов в области вычислительной биологии была ограничена для нахождения гомологий между генами. Это сделано для установления функции недавно найденных генов путем замечания общих черт генам, которые уже известны.

Теперь, эти строки DNA становятся очень большими действительно и (с потерями!) поиск должен быть сделан чрезвычайно эффективно. Большая часть современной теории строкового поиска была таким образом разработана в контексте вычислительной биологии.

Однако некоторое время назад, стандартный текстовый поиск был исчерпан. Новый подход был необходим, который позволил искать большие строки в подлинейное время, то есть, не смотря на каждый отдельный символ. Это было обнаружено, что это может быть решено путем предварительной обработки большой строки и создания специальной индексной структуры данных по нему. Многие отличающиеся такие структуры данных были предложены. У каждого есть их достоинства и недостатки, но существует тот, который особенно замечателен, потому что он позволяет поиск в постоянное время. Теперь, в порядках величины, в которых работает Google, это больше не строго верно, потому что выравнивание нагрузки через серверы, предварительная обработка и некоторый другой сложный материал должны быть приняты во внимание.

, Но в сущности, так называемое индекс q-грамма позволяет поиск в постоянное время. Единственный недостаток: структура данных становится смехотворно большой. По существу, для обеспечения поиска строк с [максимум 112] q символы (отсюда имя) это требует таблицы, которая имеет одно поле для каждой возможной комбинации буквы q (то есть, q S глоток>, где S является размером алфавита, скажите 36 (= 26 + 10)). Кроме того, должно быть одно поле для каждого положения буквы в строке, которая была индексирована (или в случае Google для каждого веб-сайта).

Для смягчения чистого размера Google будет, вероятно, использовать несколько индексов (на самом деле, они делают , для предложения услуг как исправление орфографических ошибок). Самые верхние не будут работать на символьном уровне, но на уровне слова вместо этого. Это уменьшает q, но он делает S бесконечно больше, таким образом, они должны будут использовать хеширование и таблицы коллизии для преодоления бесконечного числа различных слов.

На следующем уровне, эти хешированные слова укажут на другие индексные структуры данных, которые, в свою очередь, хешируют символы, указывающие на веб-сайты.

, Короче говоря, эти q - индексные структуры данных грамма являются возможно самой центральной частью алгоритма поиска Google. К сожалению, нет никаких хороших нетехнических документов, объясняющих, как q - индексы грамма работают. Единственная публикация, что я знаю это, содержит описание того, как такой индекс работает, †¦ увы, мой тезис бакалавра .

8
задан David Oneill 11 December 2009 в 22:22
поделиться

3 ответа

select
    text
from
    user_source
where
    type = 'PROCEDURE'
and
    name='YOURPROCEDURENAME'
order by
    line;
7
ответ дан 5 December 2019 в 11:25
поделиться

Другое решение - использовать dbms_metadata api

set line 200
set long 10000
select dbms_metadata.ddl('PACKAGE','Package Name') from dual;

Вы можете использовать его для всех метаданных, включая таблицы, индексы и ограничения .

3
ответ дан 5 December 2019 в 11:25
поделиться

Использование:

SELECT us.name,
       us.type,
       us.text
  FROM USER_SOURCE us
 WHERE us.type IN ('PROCEDURE', 'FUNCTION')
ORDER BY name, line
5
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

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