Ниже Олег olalala ответил, что "Шард (таблетка) однопоточен, изменения будут выполнены последовательно". Поэтому координатор транзакций, вероятно, при планировании транзакций оперирует не строками, а шардами. И поэтому квантом данных для блокировки здесь, вероятно, является не строка, а шард.
Я бы советовал не упоминать ANSI SQL в качестве целевого стандарта и даже не потому что ANSI – это Американский национальный институт стандартов, который представляет интересы США.
Просто в отношении стандарта SQL есть очень распространенное заблуждение – думать, что ANSI создает стандарт SQL. На самом деле сейчас в США просто берут очередную ревизию международного стандарта ISO/IEC 9075 и утверждают его в качестве национального. Например, говоря "ANSI SQL 2016" вы, скорее всего, имели в виду "ISO/IEC 9075:2016". Но у этого заблуждения есть корни – первый стандарт SQL (ANSI X3.135-1986) действительно был создан структурами, аккредитованными ANSI.
@olalala У вас в документации сказано, что "При выполнении запросов в YDB фактическое выполнение запроса к каждому шарду осуществляется в единой точке, обслуживающей протокол распределенных транзакций. ... данные уже хранятся реплицированно и возможно обслуживание более одного читателя (но писатель при этом все еще в каждый момент строго один)".
Поясните фразу "писатель при этом все еще в каждый момент строго один". Означает ли это, что два непересекающихся множества строк в одном шарде не могут параллельно изменяться двумя разными приложениями при том, что каждое приложение изменяет только "свое" множество строк?
Увидел выше ответ "Мы в целом стремимся к максимальному сближению с ANSI SQL". Т.е. здесь имеется в виду самый первый стандарт SQL, принятый в 1986 году.
@olalala У вас в документации про шардирование сказано, что "Характерное время операции разделения или объединения — порядка 500 мс. На это время вовлеченные в операцию данные становятся кратковременно недоступны для чтения и записи… Стоит отметить, что если система по каким-то причинам перегружена (например, из-за общей нехватки CPU или пропускной способности выделенных базе дисковых ресурсов) то операции разделения и объединения могут длиться дольше ".
А вот это "характерное время" в 500 мс. откуда взялось? Судя по тексту, оно не зависит от размера самих шардов, а зависит только от загрузки ресурсов CPU/IO – это так надо понимать?
@olalala У вас в документации сказано, что "Каждый индекс обслуживается своим набором шардов, и решения о разделении или объединении его партиций принимаются независимо на основании настроек по умолчанию. В будущем эти настройки могут быть сделаны доступными пользователям, аналогично настройкам основной таблицы".
Означает ли это, что сейчас отсутствует возможность управлять шардированием индекса для конкретной таблицы?
@olalala У вас в документации сказано, что "На затронутые в ходе транзакции сущности ставятся оптимистичные блокировки, при завершении транзакции проверяется, что блокировки не были инвалидированы".
Под "сущностями" здесь что подразумевается – таблицы, строки, поля, что-то другое?
@olalala У вас в документации сказано, что "YQL (YDB Query Language) is a universal declarative query language for YDB, a dialect of SQL. YQL has been natively designed for large distributed databases, and therefore has a number of differences from the SQL standard".
Если YQL это диалект, то с каким именно стандартом SQL вы себя здесь сравниваете и в чем конкретно эти отличия состоят? Где найти список того, что из SQL не поддерживается и того, что вами было в него привнесено?
Ок, создал сперва prometheus и далее запустил как у вас и указано установку в silent режиме. И опять фейл. Этого оказалось недостаточно, не хватает прав на установку в Oracle. Установка под логином prometheus идет и ему не хватает прав? Как это вообще понимать?
Я задавал вполне конкретные вопросы про полный список параметров, но не спрашивал вас, что мне делать. Ок, видимо, "полный" список параметров это просто какой-то рандомный набор параметров из документации, которым вы сами не пользуетесь.
Дальше пытаюсь продираться через ваше описание установки и ничего не понимаю.
У вас сперва идет установка ORDS с файлом параметров, в котором указан пользователь БД prometheus с паролем, а затем уже, после установки вы предлагаете его создать в БД. Так правильно или это ошибка?
Но из вашего ответа так и осталось не понятно можно ли сейчас просто взять приведенный вами полный список параметров со значениями для повторения вашего решения?
Или значения в нем могут быть вообще неподходящими для описанного вами решения как это уже случилось с параметром plsql.gateway.add ? Или plsql.gateway.add может содержать значение false и ваше решение все равно будет работать?
И вот еще не понятно, почему вы называете этот список как <все параметры>? Это все возможные параметры перечислены или что это вообще значит?
Ниже Олег olalala ответил, что "Шард (таблетка) однопоточен, изменения будут выполнены последовательно". Поэтому координатор транзакций, вероятно, при планировании транзакций оперирует не строками, а шардами. И поэтому квантом данных для блокировки здесь, вероятно, является не строка, а шард.
Я бы советовал не упоминать ANSI SQL в качестве целевого стандарта и даже не потому что ANSI – это Американский национальный институт стандартов, который представляет интересы США.
Просто в отношении стандарта SQL есть очень распространенное
заблуждение – думать, что ANSI создает стандарт SQL. На самом деле сейчас в
США просто берут очередную ревизию международного стандарта ISO/IEC 9075 и утверждают его в качестве национального. Например, говоря "ANSI SQL 2016" вы, скорее всего, имели в виду "ISO/IEC 9075:2016". Но у этого заблуждения есть корни – первый стандарт SQL (ANSI X3.135-1986) действительно был создан структурами, аккредитованными ANSI.
@olalala
У вас в документации сказано, что "При выполнении запросов в YDB фактическое выполнение запроса к каждому шарду осуществляется в единой точке, обслуживающей протокол распределенных транзакций. ... данные уже хранятся реплицированно и возможно обслуживание более одного читателя (но писатель при этом все еще в каждый момент строго один)".
Поясните фразу "писатель при этом все еще в каждый момент строго один". Означает ли это, что два непересекающихся множества строк в одном шарде не могут параллельно изменяться двумя разными приложениями при том, что каждое приложение изменяет только "свое" множество строк?
Увидел выше ответ "Мы в целом стремимся к максимальному сближению с ANSI SQL". Т.е. здесь имеется в виду самый первый стандарт SQL, принятый в 1986 году.
@olalala
У вас в документации про шардирование сказано, что "Характерное время операции разделения или объединения — порядка 500 мс. На это время вовлеченные в операцию данные становятся кратковременно недоступны для чтения и записи… Стоит отметить, что если система по каким-то причинам перегружена (например, из-за общей нехватки CPU или пропускной способности выделенных базе дисковых ресурсов) то операции разделения и объединения могут длиться дольше ".
А вот это "характерное время" в 500 мс. откуда взялось? Судя по тексту, оно не зависит от размера самих шардов, а зависит только от загрузки ресурсов CPU/IO – это так надо понимать?
@olalala
У вас в документации сказано, что "Каждый индекс обслуживается своим набором шардов, и решения о разделении или объединении его партиций принимаются независимо на основании настроек по умолчанию. В будущем эти настройки могут быть сделаны доступными пользователям, аналогично настройкам основной таблицы".
Означает ли это, что сейчас отсутствует возможность управлять шардированием индекса для конкретной таблицы?
@olalala
У вас в документации сказано, что "На затронутые в ходе транзакции сущности ставятся оптимистичные блокировки, при завершении транзакции проверяется, что блокировки не были инвалидированы".
Под "сущностями" здесь что подразумевается – таблицы, строки, поля, что-то другое?
@olalala
У вас в документации сказано, что "YQL (YDB Query Language) is a universal declarative query language for YDB, a dialect of SQL. YQL has been natively designed for large distributed databases, and therefore has a number of differences from the SQL standard".
Если YQL это диалект, то с каким именно стандартом SQL вы себя здесь сравниваете и в чем конкретно эти отличия состоят? Где найти список того, что из SQL не поддерживается и того, что вами было в него привнесено?
Ок, создал сперва prometheus и далее запустил как у вас и указано установку в silent режиме. И опять фейл. Этого оказалось недостаточно, не хватает прав на установку в Oracle. Установка под логином prometheus идет и ему не хватает прав? Как это вообще понимать?
Я задавал вполне конкретные вопросы про полный список параметров, но не спрашивал вас, что мне делать. Ок, видимо, "полный" список параметров это просто какой-то рандомный набор параметров из документации, которым вы сами не пользуетесь.
Дальше пытаюсь продираться через ваше описание установки и ничего не понимаю.
У вас сперва идет установка ORDS с файлом параметров, в котором указан пользователь БД prometheus с паролем, а затем уже, после установки вы предлагаете его создать в БД. Так правильно или это ошибка?
Но из вашего ответа так и осталось не понятно можно ли сейчас просто взять приведенный вами полный список параметров со значениями для повторения вашего решения?
Или значения в нем могут быть вообще неподходящими для описанного вами решения как это уже случилось с параметром plsql.gateway.add ? Или plsql.gateway.add может содержать значение false и ваше решение все равно будет работать?
И вот еще не понятно, почему вы называете этот список как <все параметры>? Это все возможные параметры перечислены или что это вообще значит?
Уже сломалось – код в вашей заметке. Вообще принято в Ростелекоме проверять код перед публикацией наружу?
У вас в тексте:
1) Файл параметров для установки в минимальном варианте:
plsql.gateway.add=true
2) Все параметры с комментариями (справочно):
plsql.gateway.add=false