Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать версионность (diff-и) текста / 7 сообщений из 7, страница 1 из 1
12.03.2013, 04:12
    #38180693
pH20
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
Проектирую БД что то типа веб-кеша: нужно сохранять html-код веб страницы через некоторые промежутки времени, а отсюда и суть задачи, код веб-страницы скажем за 15 мин может измениться несколькими символами, записывать каждый раз данные которые отличающийся несколькими символами расточительно. Можно конечно записывать diff-и (программно реализуемые), но тогда будут проблемы с поиском по тексту. Подскажите как правильно решить такую задачу? С выбором БД еще не решиться но лучше чтоб не зависело от конкретной БД.
...
Рейтинг: 0 / 0
12.03.2013, 13:30
    #38181197
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
pH20Проектирую БД что то типа веб-кеша: нужно сохранять html-код веб страницы через некоторые промежутки времени, а отсюда и суть задачи, код веб-страницы скажем за 15 мин может измениться несколькими символами, записывать каждый раз данные которые отличающийся несколькими символами расточительно. Можно конечно записывать diff-и (программно реализуемые), но тогда будут проблемы с поиском по тексту. Подскажите как правильно решить такую задачу? С выбором БД еще не решиться но лучше чтоб не зависело от конкретной БД.
путь номер раз:
разбить html код на части - благо он структурированный. И хранить их в отдельно . Соответсвенно при изменении (для отслеживания изменений можно юзать хэши) вставлять только новый изменившийся кусок, а не всю страницу.
Для удобства можно прикрутить вьюху (матвтюху) собирающую из последних версий всех кусков целую страницу.
...
Рейтинг: 0 / 0
12.03.2013, 14:18
    #38181319
pH20
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
Я понял что нужно копать в сторону хранимых процедур, но нигде не могу найти пример функции c использованием diff-ов, я пишу на python в нем есть прекрасная библиотека для таких целей difflib ( http://docs.python.org/2/library/difflib.html) также я узнал что в PostgreSQL есть возможность писать хранимые процедуре на Python - PL/Python ( http://www.postgresql.org/docs/9.0/static/plpython.html) но пролистал мануал я так и не понял можно ли подключить библиотеку. Так что вопрос трансформировался в такой: кто знает как реализовать diff-алгоритм ка встроенную процедуру или функцию?
...
Рейтинг: 0 / 0
12.03.2013, 15:57
    #38181549
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
pH20,

Почему-бы не сделать дополнительный слой логики на Python'e и инкапсулировать всю diff-логику там, а в базе хранить только результаты вычислений этих diff-ов?
...
Рейтинг: 0 / 0
12.03.2013, 16:31
    #38181634
pH20
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
Такая идея былла с самого начала. Но вопрос в том что в перспективе должен быть полнотекстовый поиск, хотел сразу воспользоватся встроенными возможностями по поиску в БД. А если логику diff-ов организовывать программно, значит и логику полнотекстового поиска также нужно писать заново что чревато усложнением кода. Сейчас разберусь не можно ли подключить python-код как UDF в Firebird - читал там можно на каком угодно языке реализовать.
...
Рейтинг: 0 / 0
12.03.2013, 17:09
    #38181731
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
pH20,

работа через хранимые процедуры Вам очень вряд ли поможет в плане натравливания на Diff-ы встроенных в БД средств полнотекстового поиска. UDF-ы - теоретически могут помочь, но
1. сомневаюсь, что UDF-ы Вам дадут делать на внешнем языке
2. производительность этого будет, думаю, хуже чем если хранить тексты целиком, безо всяких диффов.
...
Рейтинг: 0 / 0
12.03.2013, 20:10
    #38182008
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать версионность (diff-и) текста
Может поколупать движок wiki, там вроде поиск по истории есть, значит и диф и текстовый поиск имеются
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать версионность (diff-и) текста / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]