powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / выбрать базу, 500 млн записей, 2 поля
24 сообщений из 24, страница 1 из 1
выбрать базу, 500 млн записей, 2 поля
    #37977967
Oik741
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех, надумал маленький "проект" написать, самое важное в нем БД,
так как у самого опыта по этому вопросу мало - решил обратиться к Вам за помощью,
Вообщем есть таблица на 100-500 млн записей, всего 2 поля
первое поле - строка из нескольких слов
второе - long int

что нужно от базы - максимально быстро делать выборки из базы одновременно в ~5 потоков

запись в базу будет производиться раз в месяц-два, так что не важна скорость записи, только чтение.
в данный момент у меня все данных в txt файле, и свою задачу я решаю вот так:
авторcat ~/BASE.txt | grep "WORD" >> ~/выборка.txt

Буду рад всем советам, спасибо.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37977994
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741что нужно от базы - максимально быстро делать выборки из базы одновременно в ~5 потоков


1. Что значит "максимально"? Какое конкретно время будет приемлемо? Идеально?
2. Какие именно выборки? Поиск по слову, как в примере? Какой может быть объём возвращаемых данных?

Oik741запись в базу будет производиться раз в месяц-два, так что не важна скорость записи, только чтение.

Как много данных за один раз будет дописываться? Какое время будет считаться приемлемым? Идеальным?

Oik741в данный момент у меня все данных в txt файле, и свою задачу я решаю вот так:
cat ~/BASE.txt | grep "WORD" >> ~/выборка.txt
На текущий момент что не устраивает?

Oik741Буду рад всем советам, спасибо.
Будь конкретней в вопросах, получишь конкретнее ответы.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978073
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741,

Какого рода запросы предполагаются?
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978199
Oik741
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой1. Что значит "максимально"? Какое конкретно время будет приемлемо? Идеально?
каждый запрос может выполняться до 10-20 минут при условии что одновременно выполняется 5-10 выборок

АнатоЛой2. Какие именно выборки? Поиск по слову, как в примере? Какой может быть объём возвращаемых данных?
Первое поле содержит в себе строковые данные типа:
слово1 слово2 слово3 слово4слово1 слово8 слово9 слово37слово7 слово5слово6слово3 слово2 слово22слово8 слово1

делая из них выборку по ключевому слову "слово1" получаем выборку вида
слово1 слово2 слово3 слово4 слово1 слово8 слово9 слово37слово8 слово1

объем от 10 записей до 10-ка тысяч.

АнатоЛойКак много данных за один раз будет дописываться? Какое время будет считаться приемлемым? Идеальным?
будет записываться сразу ~100 млн записей, приемлимыми будут сутки =) идеальными - меньше суток. не критично


АнатоЛойНа текущий момент что не устраивает?
то что шелл я никому не хочу давать а помимо меня базами должны пользоваться люди, для этого делается веб морда, да и не всем понравится такой способ =)
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978232
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741всего 2 поляOik741от 10 полей до 10-ка тысяч.Что-то не сходится...
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978240
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741Первое поле содержит в себе строковые данные типа:
слово1 слово2 слово3 слово4слово1 слово8 слово9 слово37слово7 слово5слово6слово3 слово2 слово22слово8 слово1Нормализуйте таблицу, заведите справочник слов и разбейте записи на несколько. Тогда выборка по нужному слову будет происходит намного быстрее.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978244
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут full-text search нужен. думаю самая простая база с full-text search - mysql
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978245
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!тут full-text search нужен.Не нужен, судя по тому, что до сих пор простой греп устраивал.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978257
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftYo.!тут full-text search нужен.Не нужен, судя по тому, что до сих пор простой греп устраивал.
ну в 21 веке изобретать свой context index, имхо, не самое здоровое занятие.
база маленькая, нагрузка мизерная, значит экономить ресурсы нет смысла и задача, что было как можно меньше кода и возможности напортачить.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978293
Oik741
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
это оговорочка была, я написал модератору и попросил исправить, от 10 до 10-ка тысяч записей в выборке.

и по поводу full-text search прокомментировать ничего не могу,
но запросы в полном виде примерно такие
cat somefile.txt | grep SOME_WORD | grep -v ANOTHER_WORD | grep -v STOP_WORD >> output.txt
тоесть при выборке учитываются "исключающие" слова, но это можно будет и реализовать и без помощи БД.

Вообщем все что нужно - найти те записи которые в строковом поле содержат нужное СЛОВО.

греп проходится по базе из 210 млн за 2 минуты и 13 секунд, при распаралеливании задачи не знаю насколько просядет скорость.

автор[12:31 PM] oik@srv [~/Base] $ time cat base.txt | grep "идеокурс" | grep -v "есплатно" >> ~/test_out.txt

real 2m13.368s
user 0m9.353s
sys 0m18.477s
[12:33 PM] oik@srv [~/Base] $ cat base.txt | wc -l
210408631


в тестовой выборке из примера вышло 10к записей.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978298
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741Первое поле содержит в себе строковые данные
И при этом грубо и нагло нарушает первую НФ, что посылает использование индексов лесом.
Извини, в таких условиях grep - наилучшее решение.

Oik741будет записываться сразу ~100 млн записей
В таких - тоже.

Чувак, тебе не база данных нужна...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978317
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oik741греп проходится по базе из 210 млн за 2 минуты и 13 секунд, при распаралеливании задачи не знаю насколько просядет скорость.

греп проходит по всему файлику. FTS идекс будет содержать список всех слов и откуда идет ссылка на записи таблицы содержащие слово. если из 10 млн 10к выбирать, то думаю в 10 секунд можно будет уложиться
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978539
lookat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oik741,

Можете попробовать infobright.org
Это колоночная база с движком MySQL.
Как раз для вашей задачи.
Загрузка из текстового файла очень быстрая.
Размер базы на диске минимальный -- база все сжимает.
Клиент -- любой, который работает с MySQL, например тот же php.

Таблица ваша будет иметь вид:

create table tablename
(
textfield varchar(...) comment 'lookup',
numfield integer
)
engine=brighthouse;

Есть ньюанс с кодировкой -- лучше использовать utf8 и collate=utf8_general_ci
У вас ведь слова могут быть и 'ТАК' и 'Так'?

Удачи.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37978784
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741 ,
База данных тут неважно какая будет, потянет любая которую сможешь выучить.
Но, структуру тебе надо будет обдумать и поменять.
Но для этого надо по основам БД кое-что почитать.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979043
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741<пропущены детальные требования>

АнатоЛойНа текущий момент что не устраивает?
то что шелл я никому не хочу давать а помимо меня базами должны пользоваться люди, для этого делается веб морда, да и не всем понравится такой способ =)

Если твой текущий способ удовлятворяет <пропущенным детальным требованиям>, то тебе не БД нужна, а нужны:
1) веб-морда, которая позволит получить в удобном виде запросы от пользователей;
2) простенький скрипт на сервере, который эти запросы превратит в shell-script, выполнит его, оценит полученный результат и корректно вернёт пользователю в веб-морду.

Зачем тебе БД в данной задаче?
Варианты:
а) думаешь, что за более сложную программу при прочих равных заказчик заплатит больше денег. Ну, это, как его, вобщем, неправ;
б) изучить что-то новое для СЕБЯ; - тогда топик всё ещё открыт
в) думаешь, что вариант с БД будет быстрее результат выдавать - тогда скажи, какие характеристики у текущего решения;
г) думаешь, что вариант с БД будет выдавать более качественный результат - по топику не заметно...
Вариант с простым интерфесом для пользователя - не требует наличия БД.
А требования к конечному результату у тебя не изменились.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979287
Oik741
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой, это исключительно моя инициатива а не проект для продажи =)
потребность в данном сервисе есть у узкого круга людей, к томуже за него готовы платить.
приятно и полезно, плюс в портфолио java junior'а =)

хотел использовать базу т.к. есть возможность попрактиковаться с jdbc да и в лице работодателя продукт который требуется спросом будет увесистей чем студ. проект =)

сеичас поставил infobright и заливаю базу, посравниваю скорость выборки одиночные, параллельно исполняемые.

в завасимости от результатов останусь на БД либо напишу планировщик и скину текстовой файл на два разных диска(чтобы немного расширить рамки I/O в которые я упираюсь сеичас)

пока писал пост залилась, поставил запрос:
авторselect * from keywords where (locate(lower('идеокурс'),lower(keyword))>0);
минут 15-20 уже думает, пожалуй напишу лучше свои планировщик и буду грепать =)

авторmysql> show profiles;
+----------+---------------+---------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+---------------+---------------------------------------------------------------------------+
| 1 | 1353.33723800 | select * from keywords where (locate(lower('????????'),lower(keyword))>0) |
| 2 | 0.23863600 | select * from keywords limit 20 |
+----------+---------------+---------------------------------------------------------------------------+
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979289
Oik741
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перечитал пост, много опечаток и непонятных речевых оборотов, надеюсь суть будет понятна =)
извиняюсь.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979290
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741пожалуй напишу лучше свои планировщик и буду грепатьТ.е. про нормальные формы вам напрасно писали?
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979293
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741надеюсь суть будет понятна
Абсолютно понятна. Как я уже сказал, тебе не БД нужна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979331
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oik741минут 15-20 уже думает, пожалуй напишу лучше свои планировщик и буду грепать =)

дык, думать же надо. с чего бы у колочного движка скорость возросла, если он тебе всю колонку вычитать вынужден ?
в чем проблема то FTS индекс сделать ? три минуты же занимает знакомство с синтаксисом
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37979413
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе наверно лутше посмотретъ сюда .
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37984000
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТебе наверно лутше посмотретъ сюда .

Тогда уж лучше сразу на SOLR :)
Но, вообще, да, если нужен текстовый поиск, то лучше специализированные средства.
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #37984446
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧувак, тебе не база данных нужна...

О, да...

http://sphinxsearch.com/
...
Рейтинг: 0 / 0
выбрать базу, 500 млн записей, 2 поля
    #38007509
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oik741, послушай что говорит Yo.!
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / выбрать базу, 500 млн записей, 2 поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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