|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Блок А.Н.Я не знаю, сколько она там может обрабатывать запросов (Олег Оленин разгонял скорость до 80 тыс запросов в секунду на запись, но это нужно постараться) Хм, а зачем на запись-то разгонять? Скорость записи лимитируется, в основном, скоростью seek на жестком диске - и примерно одинаковая для всех БД. 80000 - это или включен кэш на запись или данные записываются большими блоками или и то и другое :) Оба случая - не интересны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2010, 20:15 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
DPH3Блок А.Н.Я не знаю, сколько она там может обрабатывать запросов (Олег Оленин разгонял скорость до 80 тыс запросов в секунду на запись, но это нужно постараться) Хм, а зачем на запись-то разгонять? Скорость записи лимитируется, в основном, скоростью seek на жестком диске - и примерно одинаковая для всех БД. 80000 - это или включен кэш на запись или данные записываются большими блоками или и то и другое :) Оба случая - не интересны :) Действительно, не интересны. А если не то и не другое? Посмотрите пример на Java для записи данных и проверьте лично. Если нужно ещё быстрее (без объектных удобств), то вот Java-пример работы c СУБД Caché на уровне "ключ(и)/значение": Пример работы с 3000000 "записями" Код: 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. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Код: plaintext 1. 2. 3.
PS: Вы можете дополнительно поэкспериментировать с транзакциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2010, 10:35 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
servitДействительно, не интересны. А если не то и не другое? Судя по ссылке, это как раз скорость пакетной загрузки, да еще без транзакций, без проверки целостности, без индексации. Что, как раз, не интересно, тут скорость вообще от БД не зависит, только от скорости заливки данных на диск :) Если у нас есть транзакция и БД живет не только в памяти, то все равно на одну запись уйдет один seek. Ну и считайте, сколько записей получим при времени seek в 4ms, например.... Выигрыш можно получить, если делать как в некоторых noSQL базах - на диск писать потоком список операций, а после краха накатывать его снова. Но это работает только если вся БД помещается в памяти и допустимо долгое восстановление. Ну и при этом есть и прочие проблемы. Cache так не делает, это точно :) В общем, обогнать физику как-то не получается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2010, 13:38 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
DPH3Судя по ссылке, это как раз скорость пакетной загрузки Вам, наверное, не составит труда в подтверждение Ваших слов привести ссылку на документацию , а также раскрыть размер этих пакетов? DPH3...да еще без транзакций... Наличие 3000000 операций в одной транзакций не сильно замедляет скорость чтения/вставки. К тому же я предложил проверить лично работу с транзакциями и без них. DPH3...без проверки целостности... О какой проверке целостности может идти речь при работе с парой "ключ(и)/значение" (в терминах Caché - разрежённый массив или глобал)? DPH3...без индексации... Вы не заметили двух индексов: первый - строковый, второй - числовой ? DPH3...В общем, обогнать физику как-то не получается :) Кто-то поставил это под сомнение? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2010, 23:33 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
DPH3Выигрыш можно получить, если делать как в некоторых noSQL базах - на диск писать потоком список операций Вы не поверите! Но в каше очень хорошо видно, как SQL распадается на микрооперации, и эти микрооперации пишутся потоком в журнал. И эти микрооперации как раз можно проводить самостоятельно. Физику не обманешь, значит скорость всех субд зависит только от физики? Но это не так. Очень много производительности теряется на сопутствующих операциях, причем из-за высокого уровня абстракции и закрытости субд тяжело понять, что именно происходит. 80000/с это не скорость записи в базу. Это скорость передачи с внешним приложениям. Если я не ошибаюсь, это именно была скорость единичного обмена. Внутренняя скорость чтения и записи зависит от скорости диска, тут все гораздо проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 10:24 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Блок А.Н., короче. Если я в середине вашего теста выдерну UPS и сетевое питание - запишется ничего, часть или база будет в corrupted состоянии и самостоятельно уже не поднимется? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 10:34 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Ну как вам на примере показать... Есть бейсик для 1С. Где вроде как и есть какие-то объекты и какие-то операции, но на самом деле непонятно, как оно все это делает и почему тормозит. Теоретически, конечно, оно может работать и оптимально, а на практике не очень, и никакая физика не помогает И есть объектно-ориентированный ассемблер (типа С++), и предположим, что он имеет альтернативные объекты и объекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 10:36 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
an0nymБлок А.Н., короче. Если я в середине вашего теста выдерну UPS и сетевое питание - запишется ничего, часть или ... Запишется ничего, если эти операции в рамках одной общей транзакции. После перезапуска системы Caché откатит незавершённые транзакции. Запишется часть, если это автономные операции вне рамок общей транзакции. Учитывая, что все операции атомарны, при записи объекта (или, если угодно, таблицы), состоящего из 10 полей, запишутся все 10 полей или ни одно. an0nym... или база будет в corrupted состоянии и самостоятельно уже не поднимется? База данных не будет в противоречивом состоянии, поскольку в Caché предусмотрены соответствующие технологии и механизмы : Caché Data Integrity Guide Caché High Availability Guide ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 12:35 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
servit, я спрашиваю конкретно про вышеприведенные 80000/сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 14:26 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
an0nymservit, я спрашиваю конкретно про вышеприведенные 80000/сек. Я привёл примеры двух тестов: с использованием "Caché eXTreme dynamic objects" и "Multidimensional Data Storage API". Ответ касался обоих. PS: Вы, наверное, обратили внимание на закомментированные строчки кода в первом примере (без общей транзакции): Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 15:59 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
an0nymБлок А.Н., короче. Если я в середине вашего теста выдерну UPS и сетевое питание - запишется ничего, часть или база будет в corrupted состоянии и самостоятельно уже не поднимется? В журнал пишутся атомарные операции(в основном, set и kill), а не операции с объектами или sql. 1.Журнала два, операционный и постоянный, в базу данные записываются данные после записи в операционный журнал. В какой момент данные записываются в постоянный журнал - я не в курсе. 2.В журнале есть номер процесса и состояние транзакции, при неожиданном падении процесса (например, его закрыла операционная система) через короткое время каше детектирует ситуацию, проверяет журнал и при необходимости отменяет результат операций. 3.Запись строки таблицы - это один атом операции, т.е. обновить половину полей даже при сбое у вас не получится. Удаление/установка индекса это другая операция, отдельно установка и отдельно удаление. При падении всей системы проводится проверка операционного журнала, при необходимости транзакция откатывается или наоборот, дописывается в базу. Операция инкремента счетчиков не журналируется, поэтому при падении базы строки данных запишутся в базу в любом случае, а счетчик может и не записаться. Эту ситуацию получить сложно, а исправить легко. Искусственно я ронял тестовую каше ресетом несколько раз для проверки надежности, в итоге повторения ошибки не добился, а операционную систему и железо стало жалко. Если у вас система упадет во время нежурналируемого update многих записей, то записано ровно по то место, до какого дошла программа. Если программа была в транзакции, то она будет откачена на момент начала транзакции. Т.е. высокоуровневую логику базы при отсутствии транзакций нарушить можно. Низкоуровневую логику базы данных нарушить тоже можно, но для этого нужно либо особое везение + либо какие-то нечеловеческие издевательства (вариант - неисправная дисковая система). Исправить нарушение внутренней структуры можно. Для примера По области начались ураганы... Но это не останавливает нашу клиентуру. Свет рубили и не раз! Но они снова и снова запускали Каше - упал сам сервер, целостность баз данных не нарушена. Также, в каше есть горячие бэкапы и shadow/mirror. Т.е. надежность не является проблемой каше. ------- Приведенный пример с 80000 операций/с это, если не ошибаюсь, пилотный проект электронной биржи, либо чего связанного с биржей. Насколько я понял, транзакции конкретно в этом месте не использовались. Ну если у биржи кто-то выдернет UPS-ник, то я даже не знаю :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 21:23 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Блок А.Н.Приведенный пример с 80000 операций/с это, если не ошибаюсь, пилотный проект электронной биржи, либо чего связанного с биржей. Насколько я понял, транзакции конкретно в этом месте не использовались. Ну если у биржи кто-то выдернет UPS-ник, то я даже не знаю :-) Ну и зачем тогда сравнивать скорость bulk insert c скоростью атомарной записи в SQL-базах? Я же и говорил, что 80000 в секунду - это без транзакций, скорее всего с write cache и без гарантий сохранности или хотя бы понимания, а что сохранилось при сбое железа. На биржах, надеюсь, в реальности такое все-таки не используют :) А писать данные в БД со скоростью потоковой записи на диск можно в почти любой реляционке. Только обычно не нужно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2010, 20:16 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
DPH3На биржах, надеюсь, в реальности такое все-таки не используют :)Используют: Технологии InterSystems для Extreme Transaction Processing (стр. 22-24) TD Ameritrade ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2010, 11:25 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
servitИспользуют: Ну, тут-то прямо говорится о поддержке транзакций, так что все нормально. Хотя, конечно, в основном маркетинговый bullshit. Ну и нагрузки смешные, 250 000 операций в день - и зачем там нужно масштабирование? А уж то, что необходима поддержка специалистов вендора для импорта данных по какому-то миллиону новых абонентов - звучит крайне странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2010, 17:02 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
DPH3Ну и зачем тогда сравнивать скорость bulk insert c скоростью атомарной записи в SQL-базах? Вы опять не поняли. Это совсем не скорость записей в базу. Это скорость записи данных из внешнего приложения. И я узнал об этом примере именно как о демонстрации тесноты интеграции каше и java, а не как о примере скорости каше. Проект реальный, и замена другой реально работающей системе, которая "не шмагла". На чем уж она там была написана, а не в курсе. DPH3Ну и нагрузки смешные, 250 000 операций в день - и зачем там нужно масштабирование? А уж то, что необходима поддержка специалистов вендора для импорта данных по какому-то миллиону новых абонентов - звучит крайне странно. А теперь я не понял, вы о чем? 250000 в день это не то чтобы смешные нагрузки - запросы бывают разные, но как демонстрация скорости не канает, согласен. Я правда не понял, откуда эта цифра. По поводу специалистов вендора я опять же не понял, о чем вы? Мне известно только о поддержке специалистов вендора при разработке новой системы и миграции старой системы в новую. Но при чем тут количество абонентов? Вообще меня в этой дискуссии раздражает роль суррогата маркетинговой службы ИС. Несколько лет назад на нас косились "хаха-смотрите, придурки без SQL работают, ну и дикари" (хотя SQL в каше есть). Так и сейчас приходится доказывать, что не верблюд. Говоришь, что каше есть и у нее есть какие-то возможности и какие-то преимущества - смотрят, как будто прибыл с марса и рассказываю про марсианские яблони. Ну честное слово :-) Все, что маркентинговая служба несет в массы воспринимается на уровне рекламы виагры. Но мы есть, мы настоящие. И мы не виагра :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2010, 19:07 |
|
|
start [/forum/topic.php?fid=48&msg=37016572&tid=1857019]: |
0ms |
get settings: |
24ms |
get forum list: |
27ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
127ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
455ms |
get tp. blocked users: |
2ms |
others: | 329ms |
total: | 991ms |
0 / 0 |