Битовые операции SQL - PullRequest
       32

Битовые операции SQL

1 голос
/ 17 декабря 2008

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

  1. Прежде чем я заново изобрету колесо, существует ли установленный ярлык для эмуляции & rArr; (логическое следствие) с использованием AND и OR и NOT или других базовых бинарных операторов SQL?

  2. XNOR позволит мне вырезать & rArr; эмуляция до четырех операций: NOT, XOR, OR, AND. Но это не широко доступно. Любые известные ярлыки для XNOR? Я думал о чем-то вроде операции «И» над операндами плюс неопубликованные операнды с макушки головы.

  3. Есть ли какие-либо комментарии относительно эффективности, достигнутой за счет внедрения побитовых структур данных на 64-битной платформе, или скорости многопоточных приложений, использующих параллельные потоки, работающие с сегментами размером в слово большего объекта данных?

(Извините, я не специалист по информатике)

Ответы [ 4 ]

2 голосов
/ 17 декабря 2008

если A, то B логически эквивалентно (не A) или B

1 голос
/ 17 декабря 2008

Есть ли какие-либо комментарии (3) об эффективности, достигнутой за счет реализации побитовых структур данных на 64-битной платформе? Скорость в многопоточных приложениях, использующих параллельные потоки, работающие с сегментами размером в слово большего объекта данных?

Лично я не задумывался об этом, но Раймонд Чен имеет некоторые комментарии.

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

1 голос
/ 17 декабря 2008

Если вы управляете битовой строкой,

x -> y 

может быть выражено в C / C ++ (или SQL) как:

~x | y

Что касается скорости, то побитовые операторы на одном машинном слове невероятно быстры, поскольку они реализованы в одной арифметической инструкции ЦП. Повышение производительности при выполнении математических вычислений должно быть практически пренебрежимым в связи с работой по фактическому извлечению данных.

0 голосов
/ 24 августа 2012

Определение XNOR - это A * B +! A *! B

Поэтому в SQL это может быть реализовано так:

DECLARE @A AS BIT;
DECLARE @B AS BIT;

(@A & @B) | (~@A & ~@B)

Альтернативные обозначения можно найти здесь: http://michaelmairegger.wordpress.com/2011/10/14/sql-nand-xnor/

...