powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех.
25 сообщений из 101, страница 2 из 5
С пятницей всех.
    #40055444
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik
Dimitry Sibiryakov

пропущено...

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Не надо никуда PID писать. Вдруг твой процесс скоропостижно упал не стерев PID из файла, а другой запустился с этим же PID. Виндавс может выдать тот же PID другому процессу.

Просто перебери все процессы и смотри каким EXE они созданы. Найдешь свой, значит оно.

Затем перебираешь окна внутри процесса.

Но проще сразу искать нужное окно FindWindowEx()
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055470
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
didgik
пропущено...


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Не надо никуда PID писать. Вдруг твой процесс скоропостижно упал не стерев PID из файла, а другой запустился с этим же PID. Виндавс может выдать тот же PID другому процессу.

Факт того что кто-то держит эксклюзивные права на запись является подтверждением того, что PID актуальный.

Dima T
Просто перебери все процессы и смотри каким EXE они созданы. Найдешь свой, значит оно.

Кстати, да. Наверное, это самое простое. Перебрать все процессы и посмотреть полные пути к файлу .exe. Правда отсутствует некий функционал атомарности. Что будет если из одной папки практически одновременно будет дважды запущен один exe? Скорее всего они оба завершат свою работу.

Ну и это не сработает если в будущем нужно будет «блокировать» не по папке где находится exe, а по некоторой другой папке куда конкурирующие процессы хотят получить эксклюзивные права на запись. В данном случае блокировка файла в этой папке гораздо лучше.

Dima T
Но проще сразу искать нужное окно FindWindowEx()

Поиск по заголовку окна? Ну это никуда не годится.

Еще можно подумать про создание разделяемой области памяти куда что-то будем писать — pid, например.
Ну и вроде есть функционал временных файлов. Файлов, которые удаляет ОС при завершении процесса.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПоиск по заголовку окна?

Обычно ищут по классу окна, а не заголовку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055474
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik
Dimitry Sibiryakov

пропущено...

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Там не нужны эксклюзивные права. Если запускать в поддереве %USER_PROFILE% то нам
скорее всего хватит обычных файловых прав. И нужны будут парочка ОС API функций
которые 1) берут свой собственный PID, 2) проверяют что среди списка процессов нету
заданного кастомного PID.

Можем попробовать набросать алгоритм.

Против семафоров я не имею ничего против но они должны быть именованные, чтобы
структура запускаемых процессов имела связи 1:1 семафор с user_dir текущего процесса.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055475
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FindWindow не подошло. Если окон данного класса больше одного, то оно возвращает первый попавшийся хендл. Соответственно надо перебирать все окна и опять вычислять есть ли нужное.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055476
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikСоответственно надо перебирать все окна и опять вычислять есть ли нужное.

Да. В чём проблема? На две строчки больше кода написать - пальцы боишься стереть?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055477
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

didgikСоответственно надо перебирать все окна и опять вычислять есть ли нужное.

Да. В чём проблема? На две строчки больше кода написать - пальцы боишься стереть?..

FindWindow тут не нужен.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055478
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikFindWindow тут не нужен.

Это самый простой из способов "активировать прогу уже запущенную из этой папки". Но смелые
эксперименты молодых сурков не остановить...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055479
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

didgikFindWindow тут не нужен.

Это самый простой из способов "активировать прогу уже запущенную из этой папки". Но смелые
эксперименты молодых сурков не остановить...

Я тоже так думал. Но оказалось, что это не так.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055480
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikЯ тоже так думал. Но оказалось, что это не так.

Оказалось, что ты просто и этого не сумел. Но хочу тебя огорчить: остальные способы не
только сложнее, но ещё и не работают. В современных Windows программа неспособна
активизироваться самостоятельно, без внешней помощи. И это правильно.

PS: Хотя, конечно, твоё "активироваться" может отличаться от моего "вывести окно на передний план".
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055481
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

didgikЯ тоже так думал. Но оказалось, что это не так.

Оказалось, что ты просто и этого не сумел. Но хочу тебя огорчить: остальные способы не
только сложнее, но ещё и не работают. В современных Windows программа неспособна
активизироваться самостоятельно, без внешней помощи. И это правильно.


Вопрос не в том, как активизировать программу, а в том, чтоб найти нужную. И да, с помощью FindWindow я не сумел.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055483
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikГлавный вопрос - активировать прогу

didgikВопрос не в том, как активизировать программу

didgikа в том, чтоб найти нужную. И да, с помощью FindWindow я не сумел.

RTFM:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowthreadprocessid
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess
https://docs.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-getmodulefilenameexa
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055523
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение пятницы-субботы.

По мотивам https://www.sql.ru/forum/1334409/tshark-bencode

Решил писать события протокола DHT в Apache Cassandra. Задача без особого смысла. Так. Бесконечно играющая.
Я ее думаю в выходные дни. И когда жене от меня ничего не нужно. И в целях изучения таких ... распределённых
и децентрализованных штук. Но для начала - понаблюдать статистику. Сколько я вижу активных узлов в течение
дня. Сколько они ищут. Что они публикуют.

Первая идея была - фиксировать UDP-пакеты типа "поиск ноды"

(уже декодированый пакет).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
{
{
  "a" : {
    "id" : "2ecb156e5b97c9b0f5eda2d7a89a84b1dcf9b4a3",
    "target" : "2ecb156e5b97c9b0f5eda2d7a89a84b1dcf9b4a3"
  },
  "q" : "66696e645f6e6f6465 ( 'find_node' )",
  "t" : "b9390000",
  "v" : "5554b38e",
  "y" : "71 ( 'q' )"
}



И фиксировать количество таких find-s по каждому таргету. Я предполагал что популярные раздачи тогда
выйдут в некую неравномерную гистограмму.

Первый вариант таблицы был таков (это синтаксис CQL Apache Cassandra. Не-SQL!)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create table nodes(
 node_id text primary key,
 last_ip text,
 last_port int,
 pings_requests int,
 get_peeers_requests int,
 find_nodes_requests int
);



Далее поля счетчики *_requests я планировал обновлять одним update-ом. Типа

Код: sql
1.
2.
cqlsh:dhtspace> update nodes set find_nodes_requests = find_nodes_requests + 1 where node_id = '7d2c835df2f49462a73c00988c7eadcf722c57e1';
InvalidRequest: Error from server: code=2200 [Invalid query] message="Invalid operation (find_nodes_requests = find_nodes_requests + 1) for non counter column find_nodes_requests"


Не вышло. Cassandra не позволяет инкремент полей за 1 dml операцию если они не являются типом counter.
Окей. Переделал под счетчики. Но не тут-то было. Таблица со счетчиками не может содержать поля смешанного типа.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
cqlsh:dhtspace> drop table nodes;
cqlsh:dhtspace> create table nodes(
            ...  node_id text primary key,
            ...  last_ip text,
            ...  last_port int,
            ...  pings_requests counter,
            ...  get_peeers_requests counter,
            ...  find_nodes_requests counter
            ... );
InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot mix counter and non counter columns in the same table"


Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными
атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055545
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
Ключевые слова для гугления: нормализация, звезды и снежинки.

Проще говоря, делать классическую звезду (и снежинку как ее развитие) намного выгоднее с точки зрения производительности, и обновления и выборок, для задач подсчета количества.
Это уже с точки зрения выдачи результата проще писать запрос к одной таблице чем помнить что у тебя их две и правильно делать связку таблиц на каждый запрос, но это обычно решается вьюшками.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055557
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
mayton
Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
Ключевые слова для гугления: нормализация, звезды и снежинки.

Проще говоря, делать классическую звезду (и снежинку как ее развитие) намного выгоднее с точки зрения производительности, и обновления и выборок, для задач подсчета количества.
Это уже с точки зрения выдачи результата проще писать запрос к одной таблице чем помнить что у тебя их две и правильно делать связку таблиц на каждый запрос, но это обычно решается вьюшками.

Какие снежинки? Какая нормализация?

Cassandra - это махровый NoSQL. Joins не поддерживается. Консистетность между таблицами - слабая.
Она есть на уровне eventual consistency. Тоесть грубо говоря каждая таблица лежит в своём собственном
времени.

Почему я взял cassandra? Не знаю. Просто так захотелось. Инженерное любопытство. У нее другие плюшки.
Но тема пока не об этом.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055567
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Какие снежинки? Какая нормализация?

Cassandra - это махровый NoSQL.
И что?
От технической стороны организации базы данных, принципы организации данных не исчезают и не меняются.
NoSQL даже более удобен для организации звезд, и сильнее напоминает о пользе нормализации чем реляционные БД.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055568
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
mayton
Какие снежинки? Какая нормализация?

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

Я думаю что о нормализации пока говорить раненько. Хотя-бы по той причине что в этом домене никто
"дупля не отсреливает". Я имею в виду DHT, KAD, Chord e.t.c. И я пока поставил простую задачу - учесть
количество запросов на публикацию контента от "id". По сути сделать 1 таблицу-лог которая просто фиксирует
число интеракций по id.

По мере поступления информации я буду эту модель нормализовывать. Но пока еще рано говорить о нормализации.
Я просто не знаю как связаны между собой атрибуты id, target, token. Как только уясню - сможем нормализовать.

Обычная бизнесовая проблема. Нехватка знаний по домену.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055579
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думаю что о нормализации пока говорить раненько.
Лично я считаю что начинать надо именно с нормализованной базы. Вот есть у нас сущность, определяем ей id - делаем таблицу даже если кроме id ничего другого не известно. Есть атрибут у этой сущности - делаем другую таблицу. И только потом, если убеждаемся что этот атрибут уникален для сущности и его будут дергать часто - тогда можем перенести его в первую таблицу. А если этот атрибут нужен редко, то можно оставить его во вторичной таблице, этаком "расширении".
Денормализация будет полезна на этапе выборок из базы. Вот когда будешь делать отчетную систему на свою базу - тогда и надо заниматься денормализацией, а во всех остальных этапах и особенно на этапе проектирования БД - нормальзованные данные это необходимо.

mayton
И я пока поставил простую задачу - учесть
количество запросов на публикацию контента от "id". По сути сделать 1 таблицу-лог которая просто фиксирует
число интеракций по id.
Ну у тебя типичный OLAP куб уже же строится. Список сущностей (udp пакеты) имеющих атрибут (адрес), и надо подсчитать количество появления атрибута. Так что две таблицы для минимального куба идеально. Одно-лучевая звезда просто напрашивается!
И тут действительно nosql база будет хорошо работать и любые объемы съест не подавившись.

mayton
Я просто не знаю как связаны между собой атрибуты id, target, token. Как только уясню - сможем нормализовать.
Наоборот. Есть три атрибута? Расценивай их как три сущности. А потом уже смотри как они между собой взаимодействуют, что есть атрибут чего.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055594
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
mayton
Я думаю что о нормализации пока говорить раненько.
Лично я считаю что начинать надо именно с нормализованной базы. Вот есть у нас сущность, определяем ей id - делаем таблицу даже если кроме id ничего другого не известно. Есть атрибут у этой сущности - делаем другую таблицу.

Впервые слышу такое прочтение понятия нормализации.

Это NoSQL так на людей влияет?
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055632
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В NoSQL нормализацию заменяют на агрегацию. Это по сути наружение 1НФ и включение в один data-row
целой коллекции других типизированных data-row или документов.

Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.

В середине 2010х мне один Моного-разработчик плакался. Жаловался что много информации хранится безо
всякого смысла в ихних базах. Не хватает схем (видимо создавали schema-less). И вообще - лучший способ
потерять какой-то атрибут навсегда - это положить его в документ Mongo.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055663
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В NoSQL нормализацию заменяют на агрегацию. Это по сути наружение 1НФ и включение в один data-row
целой коллекции других типизированных data-row или документов.
Ну так никто ж не обещал что люди будут понимать смысл и суть используемых инструментов.
То что NoSQL обычно удобнее для агрегации, не значит что надо заменять нормализацию. Кушать плюшки не требует переходить на плюшечную диету.

mayton
Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.
А разве в реляционных БД по другому? Можно конечно и попытаться изменить ключ в существующей схеме, но если на изменяемую таблицу ссылаются хоты бы пара других - будет еще замечательно если ctas сработает. А частенько приходится делать полноценный etl, одноразовый, в рамках одной БД, но etl с большой буквой T.

Разница между реляционной и не-реляционной базой на самом деле очень маленькая. И заключается она всего-лишь в том, что в "реляционной" можно определить связи (внешние ключи которые) и сам движок БД будет отслеживать их целостность при изменении данных. А в не-реляционной такой возможности нет, там за целостностью данных надо следить на уровне приложения. И все.
Вся остальная разница чисто косметическая. Другой язык запросов, другие возможности-ограничения на конкретные плюшки (в смысле что именно движок БД способен автоматизировать). Но и только.


Вот смотри, ты сейчас используешь Кассандру которая хочет держать счетчики в отдельных таблицах и не мешать их с полями другого типа. Это плюшка. А Оракл вообще не имеет счетчиков, нет у него такой плюшки в движке, поэтому ораклисты вынужденны использовать обычное целочисленное поле. А еще чтобы сделать автоматическую нумерацию записей ораклистам надо создать sequence. А mssql-овцам не надо, им хватает просто определить поле как autoincrement. А sqlite-овцам нет нужды определять текстовое это поле или числовое, чрезвычайно удобно, очень непривычно и может привести к потерям производительности, но очень удобно. А в IQ нет нужды делать индексы, там каждое поле автоматически индексировано потому что у БД колоночный метод хранения таблиц - очень тормознуто на обновлениях, но для выборок - конфетка.

Это все плюшки, уникальные и местами загадочные, но плюшки конкретных движков и технических решений примененных в них.
Но разве это отменяет принципы организации данных? Ты в любой базе можешь сделать как 0nf простынь, так и снежинку в 5nf (которая теоретический идеал, но никто не видел на практике).

Не, я конечно понимаю что некоторые местные люди считают что data structures в java и data structures в c++ это очень разные data structures и читать книжки использующие "вражеский язык" для понимания самих data structures это уголовно наказуемое деяние. Но ...


mayton
В середине 2010х мне один Моного-разработчик плакался. Жаловался что много информации хранится безо
всякого смысла в ихних базах. Не хватает схем (видимо создавали schema-less). И вообще - лучший способ
потерять какой-то атрибут навсегда - это положить его в документ Mongo.
Повторюсь: инструментом надо уметь пользоваться. От человеческой глупости никакой инструмент спасти не может.
Мало ли ты встречал приложений завязанных на Oracle/MSSQL/etc которые сами следят за связностью данных в разных таблицах? А ведь это типичные RDBMS используемые в модели NR-DBMS и то что они используют язык запросов наследованный от SQL-92 не делает их реляционными.
С другой стороны, я сейчас работаю с nosql базой (разработанной в начале 80-х), совершенно другой язык запросов, таблицы называют файлами и хранят структуру таблиц во внешних текстовых файлах... Но при этом весь доступ к БД организован через одну единственную билиотеку, которая читает те текстовые файлы и самостоятельно следит за целостностью ссылок. Так что несмотря на то что это "библиотека" - на практике получается классический embedded rdbms. При этом она считается и описывается как nosql, потом что там нет вообще ни грамма от sql :) Там конечно тоже не мало странностей и идиотизмов (в первую очередь из-за "встроенности" с которой надо уметь работать), но...
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055666
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

mayton
Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.
А разве в реляционных БД по другому? Можно конечно и попытаться изменить ключ в существующей схеме, но если на изменяемую таблицу ссылаются хоты бы пара других - будет еще замечательно если ctas сработает. А частенько приходится делать полноценный etl, одноразовый, в рамках одной БД, но etl с большой буквой T.

Я имел в виду следующее. Стоимость поддержки изменений в реляционной БД ~ равна некой условной величине.
Назовем ее 1 story point. Добавить внешний ключ. 1 единица. Проиндексировать поле - тоже 1 единица. Порезать таблицу
вдоль на 2 суб-таблицы типа родитель-потомок - тоже 1 единица. Я утрирую конечно - но объем работ примерно
одинаков с точки зрения рисков. А в не-реляционных идет так. Сделать плюшку - 0.5 поинтов. Потом еще плюшка - 0.5 поинтов.
А потом прилетает плюшка которая стоит аж 100500 поинтов. Или ее сделать нереально или архитекторы просто ее не хотят
делать по причине того что модель уже настолько далека от желаемого что проще создать новую систему. При том что
в реляционной эта-же плюшка стоила бы ну 3-5 поинтов.

Вот это я имел в виду. Непрогнозируемые затраты.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055667
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Разница между реляционной и не-реляционной базой на самом деле очень маленькая. И заключается она всего-лишь в том, что в "реляционной" можно определить связи (внешние ключи которые) и сам движок БД будет отслеживать их целостность при изменении данных. А в не-реляционной такой возможности нет, там за целостностью данных надо следить на уровне приложения. И все.

Ну ты даёшь блин. Ну возьми бухгалтерскую учебную бд и втащи ее в не-реляционную с сохранением
целостности денег на транзакциях и отчотах.

Кстати перечисли те системы из класса не-реляционных на которые ты ссылаешся. Тема - это размытая.
Тут - каждый сам себе что-то имеет в виду.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055669
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Вот смотри, ты сейчас используешь Кассандру которая хочет держать счетчики в отдельных таблицах и не мешать их с полями другого типа. Это плюшка. А Оракл вообще не имеет счетчиков, нет у него такой плюшки в движке, поэтому ораклисты вынужденны использовать обычное целочисленное поле.

Разве в Оракле я не могу сделать такое?

Код: plsql
1.
update table1 set counter = counter + 1;



Ровно тоже самое я хотел от Cassandra но она отказала мне в декларации таблиц а вовсе не в реализации этого
чудесного DML.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055671
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
А в IQ нет нужды делать индексы, там каждое поле автоматически индексировано потому что у БД колоночный метод хранения таблиц - очень тормознуто на обновлениях, но для выборок - конфетка.

А вот с этого момента - поподробнее. Column-oriented это не про индекс а про форму хранения.
Не знаком c IQ но идеология column-oriented это не про обновления а про выборки-агрегации.
Разворот на 90 градусов data-row по сути.

Хотя может мы о разных вещах говорим?
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 2 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]