2013-09-11 3 views
2

Я пытаюсь посмотреть, могу ли я использовать KDB для некоторых из моих текущих работ. У меня есть неплохой код в устаревшем SQL, и перспектива повторного использования кажется захватывающей.SQL в KDB или я с ума сошел?

Который, когда я наткнулся на: http://code.kx.com/q/interfaces/q-client-for-odbc/

Эта ссылка говорит только SQL выбора - это ОК, чтобы использовать эту функцию для вставки и удаления, а? Как насчет производительности?

+2

Почему бы не просто попробовать и посмотреть? – millimoose

+0

Кроме того, что происходит с этими документами, кажется, что то, что делает это дело 'qclient', - это подключение к другой базе данных из KDB, а не использование устаревшего SQL в нем. В этот момент вы можете подключиться к указанной базе данных из своего приложения. – millimoose

ответ

3

Основываясь на вашем вопросе, я не уверен, что это сделает то, на что вы надеетесь. Кажется, вы хотите повторно использовать SQL код на базе данных не-SQL .

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

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

3

Редко используется, но есть способ использовать ANSI SQL с KDB. Просто префикс запрос с с)

q)t:([]col1:1 1 2 2;col2:10 10 20 20; col3:5.0 2.0 2.3 2.4; grp:a б c)

q)t 
col1 col2 col3 grp` 
------------------ 
1 10 5 a 
1 10 2 a 
2 20 2.3 b 
2 20 2.4 c 

q) /standard select 
q)select from t 
col1 col2 col3 grp 
------------------` 
1 10 5 a 
1 10 2 a 
2 20 2.3 b 
2 20 2.4 c 

q)/SQL type select with select * 
q)select * from t 
'rank 

q) /Prefix the query with s) 
q)s)select * from t 
col1 col2 col3 grp 
------------------ 
1 10 5 a 
1 10 2 a 
2 20 2.3 b 
2 20 2.4 c 

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

Другой вариант заключается в использовании QODBC сервер - http://code.kx.com/q/interfaces/q-server-for-odbc/