|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGДля телекома скорее уж mnesia хороша, для того она и создана :-) Но и она кстати для дискового хранения использует берклидб, токиокабинет или эскулайт. Как вариант, использую in-memory hash для хранения очень часто изменяемых данных, а при старте/останове сервера читаю/пишу их в эскулайт базу. Впрочем, это имеет смысл, если одновременно работающих пользователей около полутысячи и более, иначе не стоит и заморачиваться. Знаешь, моих заказчиков *nix-ы в ступор вгоняют (они вообще фанаты дотнету), а ты мне про эрланговые надстройки над BDB Интересно было бы конечно пощупать, но уж больно оторвано от моей реальной жизни. Использовать SQLite как дисковое хрнанилище для IMDB - вполне себе подход, даже возражать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:03 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
GramiTimesTen делает как стоячих и Oracle и MSSQL А какая из них Embedded или IMDB ? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:05 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) Знаешь, моих заказчиков *nix-ы в ступор вгоняют (они вообще фанаты дотнету), а ты мне про эрланговые надстройки над BDB Имхо, сейчас все ИТ-подразделения умеют обращаться с юниксом/линуксом и солярисом. Хотя мне тут сложно оценивать - большинство людей из моего круга общения пользуются линуксом как на работе, так и дома, а статистика почему-то показывает преобладание виндоус :-) Эрланг кроссплатформенный, кстати. Что касается СУБД без поддержки SQL, на практике выходит, что хранение в них сериализованных многомерных структур данных и распаковка/запаковка их на уровне приложения на существенно "просаживают" производительность, так что эффективнее пользоваться SQL и наборами функций по обработке blob-полей согласно специфике приложения. В какую базу дампать на диск in-memory структуры, так это и вовсе вопрос религии, например, эскулайт имеет отличный тиклевский биндинг (в отличии от берклидб, к примеру) и позволяет легко писать пользовательские функции на С. Собственно, эскулайт в дефолтной поставке это лишь минимальный движок, к которому следует дописать нужную функциональность. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:58 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGИмхо, сейчас все ИТ-подразделения умеют обращаться с юниксом/линуксом и солярисом. Хотя мне тут сложно оценивать - большинство людей из моего круга общения пользуются линуксом как на работе, так и дома, а статистика почему-то показывает преобладание виндоус :-) Эрланг кроссплатформенный, кстати. Честно ? Спим и видим как перейти на разработку под никсы, но кто девушку кушает, тот ее и танцует :( Про эрланг знаю, было даже у начальства желание пощупать моими руками мнезию, но как то заглохло MBG Что касается СУБД без поддержки SQL, на практике выходит, что хранение в них сериализованных многомерных структур данных и распаковка/запаковка их на уровне приложения на существенно "просаживают" производительность, так что эффективнее пользоваться SQL и наборами функций по обработке blob-полей согласно специфике приложения. Ну BDB прямо скажем не особенно просаживает, с учетом того, что OLTP запросы то как правило не особо сложные. Хранится структура и все дела. Кроме того ключ до 2G это сильно. MBG В какую базу дампать на диск in-memory структуры, так это и вовсе вопрос религии, например, эскулайт имеет отличный тиклевский биндинг (в отличии от берклидб, к примеру) и позволяет легко писать пользовательские функции на С. Собственно, эскулайт в дефолтной поставке это лишь минимальный движок, к которому следует дописать нужную функциональность. Ч учетом того, что BDB не SQL-БД, биндинг звучит несколько загадочно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:08 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG[quot Gluk (Kazan)]Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. . режим persist пока очень сырой (недавно появился). я получил из-за него существенную просадку производительности на простых select-ах с индексом по BLOB полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:20 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)Про эрланг знаю, было даже у начальства желание пощупать моими руками мнезию, но как то заглохло Не очень давно mnesia unlimited вышла, там ограничения на объем данных в узле поснимали, красота. В апстрим собирались включить, но не смотрел, включили или еще нет. Gluk (Kazan) Ну BDB прямо скажем не особенно просаживает, с учетом того, что OLTP запросы то как правило не особо сложные. Хранится структура и все дела. Кроме того ключ до 2G это сильно. Это смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Большой ключ на практике мало интересен - при извлечении десятка тысяч документов при построении отчета какой объем данных надо будет поднять с таким ключом? :-) В реальном времени, скажем прямо, немыслимо делать подобный анализ. Gluk (Kazan) Ч учетом того, что BDB не SQL-БД, биндинг звучит несколько загадочно Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG[quot Gluk (Kazan)]Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. . режим persist пока очень сырой (недавно появился). я получил из-за него существенную просадку производительности на простых select-ах с индексом по BLOB полю. В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:50 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGВ документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. Гмм. а зачем забивать блок нулями ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 10:59 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGЭто смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Я еще недостаточно спятил, чтобы писать документооборот на BDB :) MBG Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). Я под биндингом понимаю параметризованные SQL-запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:01 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGЭто смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Я еще недостаточно спятил, чтобы писать документооборот на BDB :) На клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. Плюс указанным СУБД необходим постоянный мониторинг и настройка, которые для необслуживаемых серверов отсутствуют (клиенту устанавливается и настраивается железо+софт и дальше все должно годами работать, пока железо не сдохнет, бэкапы забираются по сети с помощью rsync, к примеру). Gluk (Kazan) MBG Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). Я под биндингом понимаю параметризованные SQL-запросы Имеется в виду интерфейс определенного языка программирования к динамической библиотеке. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:18 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGНа клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. MTS-а они требуют на Oracle MBG Я под биндингом понимаю параметризованные SQL-запросы Имеется в виду интерфейс определенного языка программирования к динамической библиотеке. ну это вообще мелочи ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:30 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGНа клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. MTS-а они требуют на Oracle Стоимость лицензий на оракл + стоимость железа + стоимость администрирования ... или нахрена попу наган, если поп не хулиган :-) К тому же оракл имхо неоптимально с железом работает (сотню пользователей мог бы и на целероне обслуживать), и расширяемость так себе - по отзывам, база на десяток терабайт требует очень дорогого железа (если постгрес, кажется, в яху, работает с петабайтными базами, то оракл должен уметь сильно поболее, за свою-то цену). Понятно, что оракл делает упор не на производительность, а на "фичастость" - встроенных возможностей вагон и маленькая тележка, плюс модули... Но все эти возможности в одном проекте не нужны, а требуемую часть из них можно найти/написать. Полтысячи одновременных пользователей документооборота постгрес+эскулайт обслуживают на пентиум Д с парой гиг памяти, и то я полагаю это немного и можно поднять производительность до нескольких тысяч пользователей на указанном железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:18 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGСтоимость лицензий на оракл + стоимость железа + стоимость администрирования ... Для телекома как правило не критична по поводу производительности: может быть как и SQLite требует более высокого профессионализма чем SQLite ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:49 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGПолтысячи одновременных пользователей документооборота постгрес+эскулайт обслуживают на пентиум Д с парой гиг памяти, и то я полагаю это немного и можно поднять производительность до нескольких тысяч пользователей на указанном железе. поставь 8 Oracle на Linux и получай удовольствие на том-же пеньке ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:50 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGСтоимость лицензий на оракл + стоимость железа + стоимость администрирования ... Для телекома как правило не критична До поры до времени - при появлении необхпенькеодимости перенести на кластер из десятка средних серверов вместо одного мощного возникает ощущение присутствия в фильме ужасов :-) Gluk (Kazan) по поводу производительности: может быть как и SQLite требует более высокого профессионализма чем SQLite ? Требует мало того что знания оракла, так еще и существенного времени на администрирование. В последние годы набирают популярность необслуживаемые системы, где или все задается на этапе разработки или система автоподстраивается. Боюсь, написать скрипт, который заменит профессионального админа оракл будет непросто... и стоить этот скрипт будет в разы больше самой системы :-) На самом деле мы обсуждали только движок - эскулайт, на практике к нему добавляют мощный сервер приложений, и вот уже на этой платформе можно разрабатывать достаточно крупные системы. Любую СУБД с ораклом сравнивать сложно, т.к. это уже не столько база данных, сколько сервер приложений и основную ценность представляет именно как мощная платформа с интегрированной СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 13:29 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Вопрос к MBG] : а как в sqlite дело обстоит с многопоточным доступом(не многопользовательским) в масштабах одного приложения, в частности insert? Какова вероятность возникновения ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 13:51 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
BIONВопрос к MBG] : а как в sqlite дело обстоит с многопоточным доступом(не многопользовательским) в масштабах одного приложения, в частности insert? Какова вероятность возникновения ошибок? Многопоточный доступ работает как в пределах одного приложения, так и при доступе из разных приложений. Если необходимо выполнять модификацию данных из нескольких потоков, удобно указывать таймаут, в пределах которого запрос стоит в очереди и ожидает освобождения блокировки. Ошибки какого рода имеются в виду? Если речь о возникновении коллизий, то это решается созданием очереди запросов (все делает сама библиотека эскулайт, требуется только максимально допустимое время ожидания в очереди указать). Если в работе самой библиотеки, то вероятность повреждения данных очень мала, лично мне такого видеть не приходилось (использую эскулайт уже лет пять как на серверах и КПК). Хотя при многопоточной работе эскулайт с использованием shared cache пользовательское приложение при неправильной работе с потоками имеет возможность повредить базу (по умолчанию эта опция выключена, имхо выигрыш в производительности от ее использования стоит возможного риска только при критической нехватке ресурсов и тщательно вылизанном коде многопоточного приложения). В рассылке эскулайт время от времени появляются пользователи, в режиме shared cache повредившие базу в многопоточном приложении. При многопользовательском доступе разумно создавать in-memory базу для выполнения длительных операций и к ней монтировать основную базу приложения (для аналитических приложений бывает необходимо создавать отдельную базу на диске для каждого пользователя - когда пользователей сотни и более и каждый может строить отчеты, обрабатывающие многие десятки или сотни мегабайт данных, притом пользоваться однажды созданными отчетами многократно). Для контроля доступа используется callback-функция autorizer - позволяет для каждого соединения к базе разрешить/запретить определенные операции, например, для потока, выполняющего аудит изменений, разрешить только чтение данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 14:48 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) Журнал используется при выполнении операции select? (у меня БД не модифицируется) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:10 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) Журнал используется при выполнении операции select? (у меня БД не модифицируется) Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:24 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. У меня явной блокировки нет. Проблема вообще выглядит так после указания прагмы PRAGMA journal_mode=PERSIST; Скорость выполнения нескольких десятков тысяч запросов вида select count(*) from fly_tth where tth=?; уменьшается в 10-ки раз убираешь прагму - все становится хорошо. версия - свежачек 3.6.1 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:37 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. У меня явной блокировки нет. Проблема вообще выглядит так после указания прагмы PRAGMA journal_mode=PERSIST; Скорость выполнения нескольких десятков тысяч запросов вида select count(*) from fly_tth where tth=?; уменьшается в 10-ки раз убираешь прагму - все становится хорошо. версия - свежачек 3.6.1 :) Сколько транзакций используете? Ну и тест выкладывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 21:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Сколько транзакций используете? Ну и тест выкладывайте. В данном месте вообще не используются транзакции я не меняю данные - выполняется серия select-ов. история проблемы тут: http://forum.wafl.ru/index.php?showtopic=5179&pid=79228&st=0entry79228 diff исправления такой: http://code.google.com/p/flylinkdc/source/detail?r=387# т.е. удаление "PRAGMA journal_mode=PERSIST;" решило проблему после PERSIST тормозят такие вызовы CFlylinkDBManager::is_old_tth(const TTHValue& p_tth) CFlylinkDBManager::is_download_tth(const TTHValue& p_tth) их исходник выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 22:19 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG Сколько транзакций используете? Ну и тест выкладывайте. В данном месте вообще не используются транзакции я не меняю данные - выполняется серия select-ов. история проблемы тут: http://forum.wafl.ru/index.php?showtopic=5179&pid=79228&st=0entry79228 diff исправления такой: http://code.google.com/p/flylinkdc/source/detail?r=387# т.е. удаление "PRAGMA journal_mode=PERSIST;" решило проблему после PERSIST тормозят такие вызовы CFlylinkDBManager::is_old_tth(const TTHValue& p_tth) CFlylinkDBManager::is_download_tth(const TTHValue& p_tth) Если транзакция не стартует, то указанная прагма ничего не меняет, это можете посмотреть в исходниках эскулайта. Как пример, пара моих тестовых скриптов (версия SQLite 3.5.9): Вот скрипт создания базы размером 25365K: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А вот скрипт для чтения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. Проблема в вашем враппере. Функция is_old_tth вызывает функцию get_tth_id, в которой создается транзакция и в ней выполняются операции insert. Посмотрите, во время выполнения запросов рядом с файлом вашей базы появляется файл журнала. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:15 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. Проблема в вашем враппере. Функция is_old_tth вызывает функцию get_tth_id, в которой создается транзакция и в ней выполняются операции insert. Посмотрите, во время выполнения запросов рядом с файлом вашей базы появляется файл журнала. возможно и враппер виноват... но транзакция создается только при условии p_create = true Код: plaintext 1. 2. 3. 4.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:31 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG db eval {DROP TABLE IF EXISTS events} db eval {CREATE TABLE events (id INTEGER PRIMARY KEY,value INTEGER)} [/src] Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. у меня есть еще отличия тип кей-поля char(24) скрипт создания табличек такой: m_flySQLiteDB.executenonquery("create table IF NOT EXISTS fly_tth(\n" "tth char(24) PRIMARY KEY NOT NULL);"); m_flySQLiteDB.executenonquery("create table IF NOT EXISTS fly_hash(\n" "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, tth char(24) NOT NULL UNIQUE);"); и еще все это под Win32 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:42 |
|
|
start [/forum/topic.php?fid=54&msg=35507420&tid=2009487]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 459ms |
0 / 0 |