Pull to refresh
165
229.9
Сергей Ю. Каменев @inetstar

Алгоритмист. Автор. Поставщик SSD, RAID, серверов.

Send message
Ну вот мы и вернулись к началу.
Если винда всё делает правильно и MS SQL тоже, то проведите означенный мною эксперимент.
Вы скажете — жалко железа. А я скажу гарантии D низкие и про произведение. И про итоговый результат оного.

И в качестве вывода про «честность» ваших транзакций.
Если было подтверждение — значит записана, а не в процессе. А иначе это нечестное D.
Так и понимаю. Если после подтверждения фиксации отключить ток, то после перезагрузки записанная информация нормально считается с винта.
Окей, а с чего вы взяли, что у Windows нулевая гарантия D?


Из ваших страхов. Мой прошлый опыт тоже говорит, что десятка отключений питания в разгаре операций записи Windows может не пережить. А может хватить и одного. По моему опыту вообще 50 на 50.

А железу-то как раз ничего не будет. Просто разрушится может файловая система.
Ну не ответили. Ответ был не по существу.
Правильный ответ был бы такой — ничего не стоят.

Это произведение D(OS)*D(базы), если один множитель 0, то и в целом получим ноль.

Я вот, например, не боюсь делать эксперименты с отключением питания на журналируемых ФС линукса, а вот вы по вашему признанию боитесь.

И вообще нет никакой гарантии, что выживет ваша тестовая БД, а упадёт именно системный раздел. БД также, запросто, может не подняться.

Вывод: ваш собственный опыт не позволяет вам признать мою правоту, но эго требует что-нибудь сказать.
Я дал ссылки на доки. Глобалы — это фундамент в Caché. На них всё держится.

Вы мне тоже на несколько вопросов не ответили. Пропустили неудобные.
Например, чего стоят гарантии D, если операционная система только в которой работает база, совсем не D.
А перед этим расписывали насколько честен и какие твёрдые гарантии даёт MS SQL.
Вы бы поиск по комментариям сделали. На этот вопрос я уже отвечал.

GlobalsDB через java-интерфейс имеет возможность работать с транзакциями.
Cсылки на заявления производителей.
GT.M, GT.M doc
Caché

И википедии об этом указано тоже.
Я на домашнем компьютере в PostgreSQL с помощью команды COPY


Так это же некорректное сравнение. В моём тесте я не предсоздавал запрос. Он генерировался динамически.
Если уж жульничать как вы, то я могу использовать bulk-функции для загрузки дампов глобалов. И результат повышу до миллионов.

Первый вопрос: сколько вставок конкретно вы делали? Я миллион. Вставка 778 361 вставок/секунду.

Вставим 300 миллионов значений. 422 141 вставок/секунду

Попробуйте 300M.

Я на домашнем компьютере


Второй вопрос: А не SSD ли вы использовали? Я в некоторых комментах говорил, что использовал обычные винты.

какая и должна быть при добротной реализации журналируемого дерева


Это не просто журналируемое дерево. Оно ещё поддерживает ACID-транзакции с многоверсионностью.
Например?


База болезней со специфическими следствиями, симптомами и т.д.

Как база данных может быть не главным, когда речь идет о специализированной БД?


Элементарно. Например, в социальной сети мне нужно проанализировать некий граф. Это не главное. Главное — сама социальная сеть. А специальная БД может понадобиться.

здесь я согласен с Сальтарелло и Эспозито в их определении, что архитектурное решение — это такое решение, последствия ошибочного выбора в котором будут дороже потом, нежели сейчас


Звучи, конечно, круто. Но практически любую ошибку проще исправить сразу, чем потом. Начиная от кофейного пятна и опечатки, заканчивая выбором СУБД.
Нет-нет. Вы не поняли того, что я сказал.

Моя идея не в том, чтобы брать какое-нибудь хранилище на этапе разработки. А в том, что на глобалах можно легко сконструировать специализированную БД, если таковой нет в природе. И с приличной вероятностью переписывать потом её не придётся. Десятки лет глобалы работают в трейдинге и медицине.

Вы же предлагаете писать с нуля, что долго, дорого и глючно.
С нуля писать базу данных почти никогда не является более выгодным, в проектах где она не главное. Редчайшие случаи.

На темы того, чем глобалы выгодны в разработке скоро будет другая статья.
Совершенно необязательно. Я же говорил о фазовом переходе в голове босса.
Когда босс принимает решение о переходе прототипа в релиз, тогда оно и происходит.

Полно примеров, когда недоделки и глючила шли в серию.
Или когда продавали бесконечно виснущие ОС.

Главный критерий перехода — это субъективно оцененная целесообразность оного ответственным лицом.
Они отличаются только решением руководителя. Этот фазовый переход происходит у него в голове. Он может отправить полное глючило в продажи или продакшен.
В тот момент, когда руководитель проекта говорит: «Всё! Уже не глючит. Выкладываем первый релиз (отправляем в серию)»

Вы говорите о proof of concept, а я о том, что для решения какой-то проблемы смастерили прибор, а он так хорошо работает, что оказалось что прототипной версией можно полноценно пользоваться без значимых недостатков.
У меня понимание ближе к техническим словарям русского языка. Реально работающая предварительная версия продукта.
Бывают удачные прототипы.

Или кто-то пишет код. Говорит альфа.
Время проходит, глюков не находят. И становится stable.
Приводите точную ссылку, пожалуйста. И на нужную страницу. Или цитату. Думаю, МакКоннелл много чего написал.

Я имею ввиду, что если прототип выполняет всё что требуется с нужной скоростью и гарантиями сохранности, то создавать базу с нуля не потребуется.
Может все-таки не стоит строить одну БД поверх другой?


Стоит. Это очень просто и дешево. Как прототип — точно стоит. А потом может оказаться, что и прототипа достаточно.
Предложите место, куда поместили бы вы.

Я специально рассматриваю глобалы, а не MUMPS, так как новые приложения лучше разрабатывать на COS.

А сами глобалы можно использовать как структуры хранения данных из других языков.

Мне более всего импонируют глобалы для сохранения информации нуждающейся в первичной структуризации, замены EAV, а также для конструирования новых специализированных типов БД.
Где используются глобалы
… is widely used in financial applications.
MUMPS gained an early following in the financial sector,
and MUMPS applications are in use at many banks and
credit unions. It is used by Ameritrade, the largest online
trading service in the US with over 12 billion transactions
per day, as well as by the Bank of England and Barclays
Bank, among others.*

Large companies currently using MUMPS include
AmeriPath (part of Quest Diagnostics), Care Centric,
Epic, Coventry Healthcare, EMIS, Partners HealthCare
(including Massachusetts General Hospital),
MEDITECH, GE Healthcare (formerly IDX Systems
and Centricity), and Sunquest Information Systems
(formerly Misys Healthcare*[8]). Many reference
laboratories, such as DASA, Quest Diagnostics,
[9] and Dynacare, use MUMPS software written by or based
on Antrim Corporation code. Antrim was purchased by
Misys Healthcare (now Sunquest Information Systems)
in 2001.*

The U.S. Department of Veterans Affairs (formerly the
Veterans Administration) was one of the earliest major
adopters of the MUMPS language. Their development
work (and subsequent contributions to the free
MUMPS application codebase) was an influence on
many medical users worldwide. In 1995, the Veterans
Affairs' patient Admission/Tracking/Discharge system,
Decentralized Hospital Computer Program (DHCP) was
the recipient of the Computerworld Smithsonian Award
for best use of Information Technology in Medicine. In
July 2006, the Department of Veterans Affairs (VA) /
Veterans Health Administration (VHA) was the recipient
of the Innovations in American Government Award presented
by the Ash Institute of the John F. Kennedy School
of Government at Harvard University for its extension of
DHCP into the Veterans Health Information Systems and
Technology Architecture (VistA). Nearly the entire VA
hospital system in the United States, the Indian Health
Service, and major parts of the Department of Defense
CHCS hospital system use MUMPS databases for clinical
data tracking.


Ссылка, страница 359

Information

Rating
15-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
From 500,000 ₽
SQL
Python
Linux
MySQL
Database
Golang
High-loaded systems
OOP
Docker
PostgreSQL