|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
Предлагается вашему вниманию сравнительный обзор хранения данных в двух разных системах http://blog.pikosec.com ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 16:25 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
nosql2Предлагается вашему вниманию сравнительный обзор хранения данных в двух разных системах http://blog.pikosec.com Э, а где тут обзор? Нет ни реальных цифр, ни конкретных СУБД - ничего.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 00:59 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
Описана задача. Половина статьи цифры. РДБМС не указана потому что после изученой теории ее просто незачем использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 13:34 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
nosql2, Э, нет ни сравнения скорости разных запросов для NoSQL и РСУБД (чудес не бывает, и если нет дополнительных индекстов, то некоторые классы запросы в NoSQL будут медленее), нет указания конкретной NoSQL, для которой измерялся объем индекса и не описано, как именно он измерялся и как именно там хранятся данные. Т.е., по сути, есть всего лишь какие-то числа, еще и не связанные с практической целью (в РСУБД для полнотекстового поиска вообще-то используются специальные индексы). В общем, нет ничего. Например, я могу в SQL просто запихать все записи в один блоб (еще и включив gzip шифрование) и получить объемы еще меньше, чем в NoSQL, только смысла в этом не будет. Но без указания целей организации хранения данных и типовых запросов сравнивать объем - не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:56 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
nosql2, Проектирование любой системы хранения начинается с запросов, которые будут к системе. Например если тебе нужно только получать по слову все документы, где встречается слово, то прекрасно подойдет trie, где в листах будут лежать ссылки на документы. И займет как раз около 50 мб. Но реляционная схема позволяет, например, практически бесплатно сделать запрос виде - "сколько уникальных слов в документе" или более сложные - вроде расчета TF\IDF (на основе которого считается релевантность). Как думаешь почему поисковый индекс занимает около трети объема текста? Наверное они просто неправильно хранилища выбирают? Приведи код с расчетом релевантности на основе NoSQL хранилища и на основе SQL и результаты замеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 21:07 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
nosql2, И не забудь страничное сжатие в SQL Server включить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 21:08 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasnosql2, Проектирование любой системы хранения начинается с запросов, которые будут к системе. Модель простая - Многие ко многим. Запрос простой - под слову получить список документов. gandjustasНапример если тебе нужно только получать по слову все документы, где встречается слово, то прекрасно подойдет trie, где в листах будут лежать ссылки на документы. И займет как раз около 50 мб. Причем здесь Трие ? В моей статье сам по себе словарь занимает 9 мегабайт, а связи между Словарем и Документами занимает 800 мегабайт. Зачем экономить на словаре ? gandjustasНо реляционная схема позволяет, например, практически бесплатно сделать запрос виде - "сколько уникальных слов в документе" или более сложные - вроде расчета TF\IDF (на основе которого считается релевантность). Такой запрос не бесплатный, а требует кучу индексов. Но это не важно, запрос такой не требуется. gandjustasКак думаешь почему поисковый индекс занимает около трети объема текста? Не трети, а сжатие в 100 раз вполне реально. gandjustasНаверное они просто неправильно хранилища выбирают? Кто они ? gandjustasПриведи код с расчетом релевантности на основе NoSQL хранилища и на основе SQL и результаты замеров. В статье есть. Запросы на http://booben.com выдаются с учетом релевантности, или о чем вопрос ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 21:58 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
DPH3nosql2, Э, нет ни сравнения скорости разных запросов для NoSQL и РСУБД Запросы примерно 1млн/сек. Как бегает запрос, аналог: select * from ... group by ... по базе в несколько десятков гиг можно глянуть здесь http://booben.com/Stat?q=nosql&s=sql.ru Он отрабатывает моментально. Правда база вся находится в ОЗУ, но само по себе сжатие это позволяет сделать. DPH3 (чудес не бывает, и если нет дополнительных индекстов, то некоторые классы запросы в NoSQL будут медленее) Ресь не о индексах, а о том, что помимо прироста производительности получаем еще серьезный прирост экономии места для данных. DPH3, нет указания конкретной NoSQL, для которой измерялся объем индекса и не описано, как именно он измерялся и как именно там хранятся данные. Т.е., по сути, есть всего лишь какие-то числа, еще и не связанные с практической целью (в РСУБД для полнотекстового поиска вообще-то используются специальные индексы). Кастомная NoSQL на Си написан движок. DPH3Например, я могу в SQL просто запихать все записи в один блоб (еще и включив gzip шифрование) и получить объемы еще меньше, чем в NoSQL, только смысла в этом не будет. Но без указания целей организации хранения данных и типовых запросов сравнивать объем - не имеет смысла. Но тогда вы не обеспечите базовый сценарий поиска - найти по слову\словам все документы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 22:03 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComМодель простая - Многие ко многим. Запрос простой - под слову получить список документов. реляционная схема позволяет не только этот запрос выполнить, но и много других, например расчет tf\idf. BoobenComgandjustasНапример если тебе нужно только получать по слову все документы, где встречается слово, то прекрасно подойдет trie, где в листах будут лежать ссылки на документы. И займет как раз около 50 мб. Причем здесь Трие ? В моей статье сам по себе словарь занимает 9 мегабайт, а связи между Словарем и Документами занимает 800 мегабайт. Зачем экономить на словаре ? При том что trie полностью покроет запрос, который ты озвучил, но вызовет страшный геморрой для реализации других запросов. При том, что в SQL Server можно прямо в таблицу терминов записать строковым полем все id документов и применить страничное сжатие, получится те же 50 мб и получить ровно тот же эффект. BoobenComgandjustasНо реляционная схема позволяет, например, практически бесплатно сделать запрос виде - "сколько уникальных слов в документе" или более сложные - вроде расчета TF\IDF (на основе которого считается релевантность). Такой запрос не бесплатный, а требует кучу индексов. Нужно будет только хранить количество слов в документе, что увеличит таблицу документов на целую одну колонку в 4 байта. То есть менее чем на 100кб. BoobenComНо это не важно, запрос такой не требуется. Так с этого и надо было начинать. Определяешь запросы - проектируешь хранилище. Если надо только доставать список документов по слову, то вполне подойдет одна таблица терминов, где в поле записаны все ссылки + сжатие страниц. А еще лучше - filetable+FTS в SQL Server, если выложишь тестовые данные я специально для тебя сделаю тест на SQL Server BoobenComНе трети, а сжатие в 100 раз вполне реально. Это если не требуется tf-idf, уточнения, сниппеты и много других полезных фишек. BoobenComgandjustasНаверное они просто неправильно хранилища выбирают? Кто они ? Те, кто делают поисковые движки. Например lucene и SharePoint. BoobenComВ статье есть. Запросы на http://booben.com выдаются с учетом релевантности, или о чем вопрос ? В какой статье? Ты дал ссылку где ни одной строчки нет. Как считается релевантность? Особенно интересно на больших текстовых документах и слабоселективных выборках (пример "социальная сеть"), которые выдают более 1000 документов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 01:05 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenCom http://booben.com/Stat?q=nosql&s=sql.ru Он отрабатывает моментально. Правда база вся находится в ОЗУ, но само по себе сжатие это позволяет сделать. Он отрабатывает 3 секунды (потом кешируется). Выдает абсолютно нерелелевантный результат, по запросу nosql не выдал ни одной темы по nosql :) Кроме того запрос делается только по одному слову. Когда понадобится делать запрос по нескольким словам, то появится TF-IDF, который потребует таки дополнительных индексов и база резко перестанет влезать в оперативку. Так что твои попытки - предварительная и практически бесполезная оптимизация. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 01:16 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasПри том что trie полностью покроет запрос, который ты озвучил, но вызовет страшный геморрой для реализации других запросов. При том, что в SQL Server можно прямо в таблицу терминов записать строковым полем все id документов и применить страничное сжатие, получится те же 50 мб и получить ровно тот же эффект. А можно с этого места по-подробней ? Мне до сих пор не понятно причем тут Трие и как с экономией на спичках получить 50 мб. gandjustasНужно будет только хранить количество слов в документе, что увеличит таблицу документов на целую одну колонку в 4 байта. То есть менее чем на 100кб. Как не странно но в NoSQL тоже можно добавить колонку. Ну в смысле в ту таблицу которая хранит имена\урлы документов. BoobenComЕсли надо только доставать список документов по слову, то вполне подойдет одна таблица терминов, где в поле записаны все ссылки + сжатие страниц. А то что одна таблица денормализирована и вместо 800 мб будет занимать несколько гигабайт, вас не смущает ? BoobenComА еще лучше - filetable+FTS в SQL Server, если выложишь тестовые данные я специально для тебя сделаю тест на SQL Server Все тестовые данные есть в блоге. Но я бы не рекомендовал в это ввязываться, лучше вам не спешить и немножко глубже подумать почему для РДБМС эта задача, мягко говоря, неудачная. BoobenComВ какой статье? Ты дал ссылку где ни одной строчки нет. Как считается релевантность? Особенно интересно на больших текстовых документах и слабоселективных выборках (пример "социальная сеть"), которые выдают более 1000 документов. Это немножко другая история. Но релевантность конечно есть, ее не может не быть. Например так: http://booben.com/?q=nosql&s=habrahabr.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 01:20 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasОн отрабатывает 3 секунды (потом кешируется). Выдает абсолютно нерелелевантный результат, по запросу nosql не выдал ни одной темы по nosql :) Он не может отрабатывать 3 секунды. Три секунды отрабатывает ассоциативный поиск. Но там один поиск состоит из сотен тысяч микропоисков. На этом форуме слово nosql к сожалению проассоциировалось с альбомом известного мембера, потому резульаты неочень. Другое дело на хабре или любом другом айтишном форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 01:23 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComА можно с этого места по-подробней ? Мне до сих пор не понятно причем тут Трие и как с экономией на спичках получить 50 мб. Сам trie поможет быстро делать запросы (менее 3 секунд), а листы можно жать, причем очень круто. Кроме того полностью отпадает необходимость держать все листы в памяти. По запросу можно будет с диска отдавать результаты. У тебя же проблема с объемом индекса из-за того, что индекс должен вмещаться в память. А с trie такой необходимости нет. BoobenComКак не странно но в NoSQL тоже можно добавить колонку. Ну в смысле в ту таблицу которая хранит имена\урлы документов. И как это поможет посчитать TF-IDF? BoobenComА то что одна таблица денормализирована и вместо 800 мб будет занимать несколько гигабайт, вас не смущает ? После сжатия? Сомневаюсь. Да и что мешает пожать сами ссылки? BoobenComВсе тестовые данные есть в блоге. Но я бы не рекомендовал в это ввязываться, лучше вам не спешить и немножко глубже подумать почему для РДБМС эта задача, мягко говоря, неудачная. Еще раз: если нужно только получить документы по слову - то РСУБД не подойдет. Как только появится необходимость считать TF-IDF, то реляционная база резко станет нормальным решением. BoobenComЭто немножко другая история. Но релевантность конечно есть, ее не может не быть. Например так: http://booben.com/?q=nosql&s=habrahabr.ru Дык там всего 671 ссылок в индексе http://booben.com/stat?q=nosql&s=habrahabr.ru На 2000 результатов уже нерелевантные результаты валятся. И это только по одному слову. А когда будет более одного слова в запросе, особенно с разной селективностью, то без TF-IDF никуда. Опубликуй статью про хранилища и объемы индекса когда TF-IDF появится. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 02:33 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComgandjustasОн отрабатывает 3 секунды (потом кешируется). Выдает абсолютно нерелелевантный результат, по запросу nosql не выдал ни одной темы по nosql :) Он не может отрабатывать 3 секунды. Три секунды отрабатывает ассоциативный поиск. Но там один поиск состоит из сотен тысяч микропоисков. На этом форуме слово nosql к сожалению проассоциировалось с альбомом известного мембера, потому резульаты неочень. Другое дело на хабре или любом другом айтишном форуме. На хабре проиндексировано в 10 раз меньше страниц, чем на sql.ru Чем больше страниц в индексе, тем больше будет проблем, что не то и не с тем "проассоциировалось". Когда начнешь делать поиск фраз, то непременно столкнешься с необходимостью TF-IDF и структура индекса поменяется значительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 03:32 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasСам trie поможет быстро делать запросы (менее 3 секунд), а листы можно жать, причем очень круто. Кроме того полностью отпадает необходимость держать все листы в памяти. По запросу можно будет с диска отдавать результаты. У тебя же проблема с объемом индекса из-за того, что индекс должен вмещаться в память. А с trie такой необходимости нет. Во-первых, причем здесь 3 секунды ? Там где у NoSQL\InMemory три секунды, в RDBMS будет три часа. Во-вторых я так и не понял за счет чего будут сжаты листы ( самые массивные блоки информации) gandjustasЕще раз: если нужно только получить документы по слову - то РСУБД не подойдет. Как только появится необходимость считать TF-IDF, то реляционная база резко станет нормальным решением. У меня более интеллектуальный алгоритм чет тупой подсчет количества слов в документе. Он учитывает и слова синонимы, и слова в разных падежах, и слова с опечатками. Например: Арни, Шварц, Арнольд, Шварцом и тд привяжутся к одной сущности. gandjustasНа 2000 результатов уже нерелевантные результаты валятся. И это только по одному слову. А когда будет более одного слова в запросе, особенно с разной селективностью, то без TF-IDF никуда. Опубликуй статью про хранилища и объемы индекса когда TF-IDF появится. Эту мысль я тоже к сожалению не понял. Одно из двух. Или я далек от поисковых алгоритмов, или Вы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:18 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasBoobenComпропущено... Он не может отрабатывать 3 секунды. Три секунды отрабатывает ассоциативный поиск. Но там один поиск состоит из сотен тысяч микропоисков. На этом форуме слово nosql к сожалению проассоциировалось с альбомом известного мембера, потому резульаты неочень. Другое дело на хабре или любом другом айтишном форуме. На хабре проиндексировано в 10 раз меньше страниц, чем на sql.ru Чем больше страниц в индексе, тем больше будет проблем, что не то и не с тем "проассоциировалось". Когда начнешь делать поиск фраз, то непременно столкнешься с необходимостью TF-IDF и структура индекса поменяется значительно. Вы всё напутали, чем больше страниц тем лучше работают ассоциации. База знаний шире. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 09:22 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
gandjustasnosql2, И не забудь страничное сжатие в SQL Server включить. если Edition соответствующий позволяет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:22 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
Winnipuhgandjustasnosql2, И не забудь страничное сжатие в SQL Server включить. если Edition соответствующий позволяет Так нужно четко понимать за счет чего будет это сжатие. Просто включить и надеятся на магию "в десять раз" не вариант. Хотябы потому что каждый случай компрессии связан с природой данных и специфичен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 15:47 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComgandjustasСам trie поможет быстро делать запросы (менее 3 секунд), а листы можно жать, причем очень круто. Кроме того полностью отпадает необходимость держать все листы в памяти. По запросу можно будет с диска отдавать результаты. У тебя же проблема с объемом индекса из-за того, что индекс должен вмещаться в память. А с trie такой необходимости нет. Во-первых, причем здесь 3 секунды ? Там где у NoSQL\InMemory три секунды, в RDBMS будет три часа. Во-вторых я так и не понял за счет чего будут сжаты листы ( самые массивные блоки информации) gandjustasЕще раз: если нужно только получить документы по слову - то РСУБД не подойдет. Как только появится необходимость считать TF-IDF, то реляционная база резко станет нормальным решением. У меня более интеллектуальный алгоритм чет тупой подсчет количества слов в документе. Он учитывает и слова синонимы, и слова в разных падежах, и слова с опечатками. Например: Арни, Шварц, Арнольд, Шварцом и тд привяжутся к одной сущности. gandjustasНа 2000 результатов уже нерелевантные результаты валятся. И это только по одному слову. А когда будет более одного слова в запросе, особенно с разной селективностью, то без TF-IDF никуда. Опубликуй статью про хранилища и объемы индекса когда TF-IDF появится. Эту мысль я тоже к сожалению не понял. Одно из двух. Или я далек от поисковых алгоритмов, или Вы. даже так? для какого языка? и как опечатки обрабатываются? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 20:25 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
Winnipuhдля какого языка? Для любого языка, главное чтобы обьем текста был приличный. Но это не целевая задача системы, исправлять ошибки. Это как побочный эффект ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 11:26 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComWinnipuhдля какого языка? Для любого языка, главное чтобы обьем текста был приличный. Но это не целевая задача системы, исправлять ошибки. Это как побочный эффект не совсем понял, как это для любого? То есть, скажем: русский, английский, немецкий, испанский - для них вы умеете исправлять опечатки? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 12:46 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
Winnipuhне совсем понял, как это для любого? То есть, скажем: русский, английский, немецкий, испанский - для них вы умеете исправлять опечатки? Смотря что подразумевать под опечаткой. Если будет достаточно крупный корпус текста где слово будет встречатся с опечаткой и без то скорей всего такая ситуация будет идентифицирована и термины связаны. Пример работы: жава, джава, ява http://booben.com/?q=жава&s=sql.ru Здесь описаны еще примеры работы с опечатками: http://blog.pikosec.com/?p=72 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 13:29 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComWinnipuhне совсем понял, как это для любого? То есть, скажем: русский, английский, немецкий, испанский - для них вы умеете исправлять опечатки? Смотря что подразумевать под опечаткой. Если будет достаточно крупный корпус текста где слово будет встречатся с опечаткой и без то скорей всего такая ситуация будет идентифицирована и термины связаны. Пример работы: жава, джава, ява http://booben.com/?q=жава&s=sql.ru Здесь описаны еще примеры работы с опечатками: http://blog.pikosec.com/?p=72 ну сзодил, там куча страниц х. поймешь зачем выбранных страниц... вы счетчики накручиваете давая ссылки? я так и не понял, как вы работаете с опечатками? Какой алгоритм? Ну, есть такой набор в тексте, "жава, джава, ява", а правильное слово предположим должно быть "джява" и что вы будете делать? То есть вы хотите "на шару" прикинуть, что должно быть правильным или вы выбираете часто встречающееся? или? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 13:38 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
WinnipuhBoobenComпропущено... Смотря что подразумевать под опечаткой. Если будет достаточно крупный корпус текста где слово будет встречатся с опечаткой и без то скорей всего такая ситуация будет идентифицирована и термины связаны. Пример работы: жава, джава, ява http://booben.com/?q=жава&s=sql.ru Здесь описаны еще примеры работы с опечатками: http://blog.pikosec.com/?p=72 ну сзодил, там куча страниц х. поймешь зачем выбранных страниц... вы счетчики накручиваете давая ссылки? я так и не понял, как вы работаете с опечатками? Какой алгоритм? Ну, есть такой набор в тексте, "жава, джава, ява", а правильное слово предположим должно быть "джява" и что вы будете делать? То есть вы хотите "на шару" прикинуть, что должно быть правильным или вы выбираете часто встречающееся? или? Я с опечатками напрямую не работаю. Если вам нужен алгоритм фикса опечаток, то стоит поискать чтото другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 13:53 |
|
RDBMS Vs NoSQL
|
|||
---|---|---|---|
#18+
BoobenComWinnipuhпропущено... ну сзодил, там куча страниц х. поймешь зачем выбранных страниц... вы счетчики накручиваете давая ссылки? я так и не понял, как вы работаете с опечатками? Какой алгоритм? Ну, есть такой набор в тексте, "жава, джава, ява", а правильное слово предположим должно быть "джява" и что вы будете делать? То есть вы хотите "на шару" прикинуть, что должно быть правильным или вы выбираете часто встречающееся? или? Я с опечатками напрямую не работаю . Если вам нужен алгоритм фикса опечаток, то стоит поискать чтото другое. "Он учитывает и слова синонимы, и слова в разных падежах, и слова с опечатками. " вопросов больше не имею (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2014, 14:03 |
|
|
start [/forum/topic.php?fid=48&fpage=9&tid=1856856]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
133ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 228ms |
0 / 0 |