
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.01.2007, 23:36
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
Добрый всем день! У меня такой вопрос: Хочу написать что то навроде каталога по различным типам товаров, с их подробным описанием и с возможностью выбора элементов каталога по их свойствам. Примерная идея реализации у меня такая: Код: plaintext 1. 2. 3. 4. Код: plaintext Код: plaintext Имеет ли смысл моя идея реализации такой задумки? Как лучше хранить данные (имеется ввиду как раз описание товаров с их свойствами) Какой лучше сервер БД выбрать для этого (я так понимаю он должен очень быстро работать с полнотекстовым поиском) Как реализуется индекс текстового поля в БД? Т.е. в приведенном мною примере хранения описаний будет ли индекс ускорять поиск например по строке LIKE "%value2%"? Как лучше выбирать данные, с помощью LIKE или регулярных выражений? И вообще любые другие мнения и советы на этот счет приветствуются. PS. Очень прошу давать ответы с объяснением той или иной позиции, а то фразе "Oracle используй" сложно доверять, потому как ни аргументов, ни чего... прошу отнестись серьезно, либо просто пропустить данный топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 00:29
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
>>> Имеет ли смысл моя идея реализации такой задумки? Лишённой смысла её определённо не назовёшь. >>> Как лучше хранить данные (имеется ввиду как раз описание товаров с их свойствами) Уже обсуждали в форуме. Поскольку описание всётаки структурировано, то и хранить лучше в структурированном виде. >>> Какой лучше сервер БД выбрать для этого (я так понимаю он должен очень быстро работать с полнотекстовым поиском) Так и скажу - Оракл используй. Поддержка XML и регулярных выражений всроена в СУБД и ничего похожее на XLM выдумывать не надо. XML можно текстом хранить, можно в реляционное представление преобразовать. Есть модули для индексирования текста и поиска слов в тексте, хотя возможно тебе и XML хватит. >>> Как реализуется индекс текстового поля в БД? Т.е. в приведенном мною примере хранения описаний будет ли индекс ускорять поиск например по строке LIKE "%value2%"? Для поиска текста с указанными словами обычно используют инвертированный индекс, где слову соответствует множетство ID записей с текстом в котором оно встречается. Для задания предиката нужно использовать специальные операторы контекстного поиска. >>> Как лучше выбирать данные, с помощью LIKE или регулярных выражений? Лучше искать записи с помощью операторов контекстного поиска. Если говорить о полном сканировании всех текстов, то я думаю LIKE будет быстрее, потому что оно проще. Но точный ответ дадут только испытания конкретной СУБД. >>>И вообще любые другие мнения и советы на этот счет приветствуются. Уже обсуждали в форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 00:57
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
Спасибо за полный и развернутый ответ.. у меня только есть одно "но"..... Oracle же насколько я знаю платная БД, и стоит немалых денег... так как идею я хочу в дальнейшем использовать практически, а никакого финансирования за мной не стоит, то мне скорей всего хотелось бы услышать советы по поводу реализации и деталей реализации на свободных СУБД. Их ведь я так понимаю тоже немало.... Есть ли достойные альтернативы Oracle но свободные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 08:02
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
У Oracle есть бесплатная редакция OracleXE. Также, у MSSQL2005 есть бесплатная редакция MSSQL2005 Express Edition, ктороая тоже умеет работать с XML. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 09:23
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
Блин.. бесплатные редакции это конечно хорошо.. хотя у них наверное есть какие то ограничения. Но это я посмотрю в интернете уже. Тогда сразу хочу спросить следующий вопрос по своей задумке :) Допустим есть таблицы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И в таблице Price содержатся "сырые" данные из прайсов продавцов. Т.е. например для одного и того же товара у двух разных фирм могут быть названия "Samsung GHF78 78'' Flat panel" и "Телевизор 78'' SAMSUNG <GHF78>", поле itemUniqID указывает как раз на их уникальное описание. Т.е. у двух этих товаров значение этого поля будет одно и то же. В Таблице Unique поле uniqSign содержит строчки по которым можно идентифицировать данный элемент однозначно из таблицы Price. Т.е. для указанных выше двух товаров это может быть строчка GHF78. И соотнесение записей из таблицы Price к записям таблицы Unique можно сделать Код: plaintext Опять же имеет ли смысл такая реализация идеи? И насколько она оптимальна в плане производительности, при условии что записей в Price порядка 5 миллионов, а в таблице Unique около 50000 (хотя скорей всего меньше)? Если есть более оптимальный вариант, то с радостью его выслушаю. Как лучше реализовать случай, когда для условия для идентификации используется несколько подстрок? Т.е. например строки идентичны тогда, когда Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 10:57
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
Гуляев ГошаПри этом в поле itemDescr предполагаю информацию хранить в виде напоминающем xml, т.е. Код: plaintext Параметры могут быть не строковыми (например, от 2 до 5) Генерация вот этой вот строки Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 11:35
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
Гуляев ГошаДопустим есть таблицы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И в таблице Price содержатся "сырые" данные из прайсов продавцов. Т.е. например для одного и того же товара у двух разных фирм могут быть названия "Samsung GHF78 78'' Flat panel" и "Телевизор 78'' SAMSUNG <GHF78>", поле itemUniqID указывает как раз на их уникальное описание. Т.е. у двух этих товаров значение этого поля будет одно и то же. В Таблице Unique поле uniqSign содержит строчки по которым можно идентифицировать данный элемент однозначно из таблицы Price. Т.е. при любом изменении temName или uniqDescr запускается процедуруа, пересчитывающая itemUniqID ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2007, 16:17
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
Гуляев ГошаБлин.. бесплатные редакции это конечно хорошо.. хотя у них наверное есть какие то ограничения. Для Oracle размер БД max 4 ГБ, некоторых опций, которые необходимы для больших БД нет. В остальном один X. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2007, 10:17
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
ModelRТ.е. при любом изменении temName или uniqDescr запускается процедуруа, пересчитывающая itemUniqID ? Нет не прикаждом, а просто регулярно. Т.е. прайсы собираются в таблицу Price. Потом для записей уже идет процедура сопоставления с описанием. Кстати сразу еще вопрос: Если я хочу сделать Update для таблицы в которой миллионы записей, но обновляться будут только записи с определенным значением числового поля, которое к тому же индекс, т.е. например хочу обновить все записи принадлежащие одной фирме. Как можно оптимизировать это? Я так понимаю запрос: Код: plaintext Код: plaintext stiПараметры могут быть не строковыми (например, от 2 до 5) Генерация вот этой вот строки Код: plaintext Про нестроковые параметры не совсем понял.. параметры могут быть разными.. и строковыми и числовыми Про 5 миллионов записей тоже не совсем понял, эту строчку надо генерировать не для 5 миллионов записей, а для нескольких десятков тысяч и всего один раз и то вручную. Это свойства конкретного товара, которые один раз забиваются а потом просто используются либо при надобности изменяются неточности. И все же остается вопрос про то как реализовать UPDATE для какой либо таблицы, при этом подстроки должны браться из поля другой таблицы. Сумбур. Например: В таблице Pattern, поле pattXML есть данные: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2007, 12:05
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
авторПро нестроковые параметры не совсем понял.. параметры могут быть разными.. и строковыми и числовымиВот вам товар: Код: plaintext Вообще мне больше нравится подход вроде тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2007, 12:45
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
sti авторПро нестроковые параметры не совсем понял.. параметры могут быть разными.. и строковыми и числовымиВот вам товар: Код: plaintext Вообще мне больше нравится подход вроде тынц Ссылка на самом деле очень помогла и как бы блин мне кажется реализация такая даже гораздо легче чем моя.... сейчас помозгую над ней... думаю вопросы еще появятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2007, 13:23
|
|||
|---|---|---|---|
|
|||
Прошу совета в реализации базы. |
|||
|
#18+
mcureenab Гуляев ГошаБлин.. бесплатные редакции это конечно хорошо.. хотя у них наверное есть какие то ограничения. Для Oracle размер БД max 4 ГБ, некоторых опций, которые необходимы для больших БД нет. В остальном один X. а как можно реализовать XSLT преобразования, используя OracleXE? Думаю, топистартеру будет это тож интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2007, 13:54
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
Lexoosа как можно реализовать XSLT преобразования, используя OracleXE? Думаю, топистартеру будет это тож интересно Для этого оракл предоставляет XML Developer's Kit. Сам как то пробовал выполнить преобразование, но что то у меня не получилось. Наверное руки кривые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.02.2007, 17:01
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
Описание решения такой задачи есть. Даже есть термин для таких задач "Объектно-реляционная модель". Т.е. когда работаем с единичной категорией, например товаром, то это "объект", а когда ищем данные это реляционная таблица. Короче можно в поисковиках поискать ... В данной задача я бы разделил атрибуты товаров на обязательные (т.е. общие, линейные - которые необходимы для решения задачи в конкретной в предметной области - например складской учет (наименование, цена, и т.д.) и описательные (индивидуальные характеристики - цвет, фасон). Первые храняться в полях реляционной таблицы - вторые в отдельном поле этой таблице в виде XML. Таким образом первая группа - все преимущества реляционной модели и построения классических учетных систем. первая группа + вторая - полное структуированное описание каталога товаров (например таким образом в одной конторе делал связь между учетной системой и каталогом продукции на Web-сайте) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2007, 01:19
|
|||
|---|---|---|---|
Прошу совета в реализации базы. |
|||
|
#18+
mcureenabДля этого оракл предоставляет XML Developer's Kit. Сам как то пробовал выполнить преобразование, но что то у меня не получилось. Наверное руки кривые. Мой коллега таки осилил. Я так понял, проблема была собственно написать ЧЫДЕ тому, кто делал это впервые в жизни, а вызвать из оракла - получилось легко и непринужденно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&tablet=1&tid=1544740]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 464ms |

| 0 / 0 |
