С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 07/02/12 в 18:13 |
есть файл 600к строк (можем прочитать через file чтобы получить массив)
кто бы и как записал их в базу cdb?, надо.
последовательными вставками кажется долго.
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 09/02/12 в 14:32 |
вопрос никто не осилит?
замерил, 60к уходят в базу за пол-часа
используется Database Abstraction Layer Functions.
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 09/02/12 в 14:33 |
локалка
freebsd 7.3 256mb
apache 2.2
php 5.2.17
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 09/02/12 в 15:05 |
freeek писал: | кто бы и как записал их в базу cdb?, надо. |
Что за cdb ?
Вообще открываешь файл, открываешь базу, лочишь таблицы, читаешь построчно и пишешь в базу, потом снимаешь лок с таблицы. Закрываешь файл, базу.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
1
|
|
|
С нами с 06.02.12
Сообщения: 11
Рейтинг: 15
|
Добавлено: 09/02/12 в 15:09 |
Не знаю, что за CDB, но есть универсальный способ. Монтируем директорию в оперативную память, останавливаем сервер базы данных (если он есть) и настраиваем его на работу с этой директорией, запускаем. Скорость записи повысится в разы.
Под виндой не знаю как делать, под linux очень просто:
sudo mount -t tmpfs tmpfs /mnt
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 09/02/12 в 15:23 |
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 09/02/12 в 15:31 |
ну и изврат. У тебя основную нагрузку будет нести интерфейс работы с cdb, пока он там будет все хешировать и лочить.
Просто прочитать файл в 600к строк займет наверное пару секунд, не дольше.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
3
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 09/02/12 в 15:49 |
а не жирно будет каждый раз читать файлы по 7мб и что то в нем искать?
cdb по утверждениям работает быстрее чем sqlite, вот и есть желание проверить.
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 09/02/12 в 16:18 |
не понимаю, тебе надо импортировать файл в базу или же работать с ним как с базой ? При чем тут "каждый раз читать файлы по 7мб" ?
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
3
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 09/02/12 в 16:35 |
да, работать как с базой.
у меня проблем нет, у меня просто вопрос почему так долго запись идет и возможно кто то работал ранее с таким форматом, что то посоветовать может.
|
|
|
|
С нами с 06.02.12
Сообщения: 11
Рейтинг: 15
|
Добавлено: 09/02/12 в 17:49 |
Пробовал использовать простые key-value решения, не порадовала скорость записи. Остановился на mongodb, она записываемую информацию кэширует и дампит на диск раз в минуту. А эта cdb-библиотека скорее всего на каждую новую запись делает обращение к диску, отсюда и тормоза. Нужна быстрая скорость: работайте с оперативной памятью. Или монтируйте там файловую систему или используйте ту БД, что хранит всё в памяти: memcached, redis, например.
Я по online-доке толком не понял, что есть cdb (просто key-value или чо-то поизвращённее) но SQL-запросов там точно нет
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/12 в 13:10 |
вопрос снят.
из-за невнимательности забыл указать handler (тип базы который хочу использовать) и по умолчанию использовался flatfile, из-за этого запись длилась ну очень долго, часами, потому что flatfile внутри похож на обычный файл +какая то своя информация.
указав нужный handler в лице cdb, файл источник читался равным порциями (по строкам)и записывался в базу.
из файла в 6,7мб получилась база в 21,5мб, все 620к записей ушли в базу за 40 секунд.
выборка по ключу на freebsd 7.3 256mb, apache 2.2 , php 5.2.17 быстрее аналогичной из mysql примерно раз в 5 получается, сильно не уточнял, некогда.
пс: это так, вдруг кому то понадобиться
пс: всем спасибо, всех оценил.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 10/02/12 в 13:28 |
freeek писал: |
указав нужный handler в лице cdb, файл источник читался равным порциями (по строкам)и записывался в базу.
из файла в 6,7мб получилась база в 21,5мб, все 620к записей ушли в базу за 40 секунд.
выборка по ключу на freebsd 7.3 256mb, apache 2.2 , php 5.2.17 быстрее аналогичной из mysql примерно раз в 5 получается, сильно не уточнял, некогда.
пс: это так, вдруг кому то понадобиться
пс: всем спасибо, всех оценил. |
выборка из базы весом в 7мб?
очень интересно, а если база весит под гиг и там 5м строк, будет такой же выигрыш в 5 раз?
напиши плиз, как собирал и настраивал, я бы тоже погонял
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 10/02/12 в 13:35 |
freeek писал: | php 5.2.17 быстрее аналогичной из mysql примерно раз в 5 получается, сильно не уточнял, некогда. |
Хоть примерно в числах скажи ? А то у меня что то сомнения по поводу такой скорости. В mysql если кинуть индекс, то тоже все весьма быстро делается.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/12 в 14:04 |
выборка была по индексированному значению, по сути получается поиск шел по индексу
в среднем 0,0034 против примерно 0,0007, под рукой нет, все вырубил, надо идти, позже конечно более доскональна проверю, так как самому интересно.
по описанию cdb позиционируется как быстрая база для чтения константных данных, пошарив по тырнэтам, вроде довольно быстрая штука. и ее таскать с собой можно
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/12 в 14:06 |
http://cr.yp.to/cdb/install.html здесь инструкции, качаем, инсталируем.
работа через Database (dbm-style) Abstraction Layer Functions, в мануале к пыху есть все что нужно, чтоб работало
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 17/02/12 в 14:00 |
что-то я не могу настроить, базы в 5 метров жрет, а на гиговой виснет процесс
|
|
|
|