Tibero. Первый блин

от автора

Недавно в моей жизни закончился период поиска новой работы. На одном из собеседований этого периода я узнал, что в мире появилась новая СУБД, разработчики которой обещают вот-вот затмить собой Oracle всемогущий. Заманчивое обещание тут же породило у меня желание попробовать это чудо заморской техники. Речь шла о корейской СУБД Tibero.

По данным википедии:

Tibero — так называется СУБД производимая и распространяемая Tibero Corporation, являющаяся частью Южно-Корейской корпорации TmaxSoft. Разработка этого продукта начата в 2003 году, а в 2008 году они стали второй компанией в мире предоставляющей кластер основанный на дисках, как на разделяемом ресурсе (shared-disk-based cluster).

CУБД Tibero считается альтернативой Oracle в связи с их полной совместимостью с продуктами Oracle, включая SQL.
Tibero гарантирует надежность транзакций базы данных (которые являются продуманным набором SQL выражений) обеспечиваемой поддержкой ACID (атомарность, согласованность, изолированность, долговечность).

Tibero реализовало уникальную архитектуру потоков (Tibero Thread Architecture) для решения недостатков предыдущих СУБД. В результате Tibero может эффективно использовать системные ресурсы, такие как CPU и память, используя меньшее количество серверных процессов. Это позволяет Tibero предлагать сочетание производительности, стабильности и масштабируемости, и облегчение процесса разработки и настройки. Дополнительно, СУБД позволяет пользователям и разработчикам используя множество стандартных интерфейсов легко интегрироваться с другими СУБД и приложениями.

В дополнение, для улучшения ‘Tibero Active Cluster’ (система кластеризации БД похожая на Oracle RAC) была применена технология передачи информации блоками. Tibero поддерживает самонастраивающуюся оптимизацию производительности, надежную систему мониторинга базы данных и систему управления производительностью.

В Корее, Tibero была внедрена более чем 450 компаниям с различными направлениями деятельности: финансы, производство и связи с общественностью; и более чем с 14 компаниями в остальном мире по данным на Июль 2011.

По ощущениям, этот текст был написан сотрудниками самой Tibero, но это мы оставим на их совести.

Если еще покопаться в интернете, то можно обнаружить, что чуть более года назад компания открыла свое представительство в России, а кроме того «В настоящее время в России в реализации находятся около 50 проектов в самых различных областях. Для ряда заказчиков (например, Федерального центра информатизации Счетной палаты РФ) одной из причин поиска альтернативных решений на азиатском направлении (где компания TmaxSoft является лидером) стали введенные санкции со стороны США, касающиеся IT отрасли, которые TmaxSoft не поддерживает. Среди заказчиков Tibero в России: МТС, Министерство обороны РФ, МосЭнергоСбыт, Счетная палата РФ, Банк России, Федеральная служба по тарифам и др.»

В совокупности это ещё больше подогрело мой интерес к этому продукту. И я решил его попробовать: запустить и поиграться с ней. Для этого я в облаке Google арендовал маленький сервер с Debian 7.9 (wheeze) на борту. Вот его параметры:

Machine type: n1-standard-1 (1 vCPU, 3.75 GB memory)
CPU platform: Intel Ivy Bridge
Boot disk and local disks: 40GB Standard persistent disk

Первое с чем ты сталкиваешь — это критически маленькое количество информации на русском, да и на английском тоже её не густо. Второе — это то, что Tibero не предоставляет для нужд обучения и разработки бесплатную версию СУБД как это делает Oracle. Tibero же предоставляет тестовую лицензию на предыдущую версию СУБД сроком на пол года, и найти её мне было не просто. Для этого нужно было найти вот этот официальный, но запрятанный в недры интернета сайт: http://technet.tmaxsoft.com/. зарегистрироваться, скачать дистрибутив последней версии, обнаружить, что на него нет бесплатных лицензий, удалить дистрибутив, скачать дистрибутив старой версии и инструкцию по установке.

И так, скачиваем инструкцию и понимаем, что нам нужно JDK не ниже 1.5, gcc >= 3.4.6, xml файл лицензии на сервере, 512 MB RAM, Swap File 1 GB, 300mb в /tmp, 300MB на жестком диске при полной установке и 200 MB если ставите только клиент (но среди текста инструкции говорится, что без 1,5 GB база не поставится). Требования по Software я выполнил не все по очевидным причинам, а они такие: RedHat Enterprise Linux AS/ES 2.1, 3.0, 4.0. В примечании еще говорится о требовании к версии ядра: она должна быть не меньше 2.6.

Самым странным для меня стало требование поменять параметры ядра для установки! Ладно, если я крупная корпорация и у меня много денег и серверов. А если я маленькая компания и я экономлю на всем, чем могу? Покупаю дешевый корейский Oracle, у меня сервер-то всего один. Там много чего крутится и как-то не очень здорово безальтернативно заставлять меня менять настройки ядра.

Ладно, поправил файл /etc/sysctl.conf на следующее:

kernel.sem = 10000	32000	10000	10000 kernel.shmall = 2097152 kernel.shmmni = 4096 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 1024	65000 

Требования Tibero такие:

semmsl 			10,000 		/proc/sys/kernel/sem semmns 			32,000 semopm 			10,000 semmni 			10,000 shmall 			2,097,152	 /proc/sys/kernel/shmall shmmax 			half of physical memory (in bytes) 	/proc/sys/kernel/shmmax shmmni 			4,096 	/proc/sys/kernel/shmmni file-max 		6,815,744 	/proc/sys/fs/file-max ip_local_port_range 	1024 - 65000 	/proc/sys/net/ipv4/ip_local_port_range  

)
Применил настройки с помощью /sbin/sysctl -p и перезагрузил сервер. Сделал для указания, куда должны падать временные файлы установки следующее:

export TB_INST_TMP_DIR=/opt  

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

source ~/.profile 

После этого, мне уже не говорили о том, что такой программы нет, а просто сказали: «Tip file open failure.: No such file or directory». Долгое копание в интернете не привело ни к чему разумному. Документация утверждала, что корень зла в не установленном TB_SID, но TB_SID был установлен, а программа все равно была недовольна. Пришлось запустить создание базы данных и выставить все настройки в значение «По умолчанию». После этого наступил успех! База заработала.

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

Пытаясь поставить клиент через установщик СУБД на моём ноутбуке с Ubuntu я обнаружил чудное соответствие документации и реальности. ключ -G приводит к helpу, а не графическому режиму, а для графического режима надо использовать -i gui или -i swing, однако ни первый, ни второй не захотели работать на Ubuntu уверяя меня, что Installer user interface is not supported.

В итоге мне пришлось поставить целиком Tiberoна мой ноутбук с Ubuntu. Прогнать source ~/.profile После этого найти аналог TNSNAME.ora. Находится он в папке $TB_HOME/client/config и называется tbdsn.tbr.

Формат он имеет до боли знакомый:

DBTNS=     (        (INSTANCE=(HOST=hostname)        (PORT=port)        (DB_NAME=DB_NAME)      )   )  

И… Победа! По команде:

tbsql sys/syspassword@DB_TNS  

Я подключился к базе на удаленном хосте (пляски с бубнами вокруг firewall я оставлю за кадром).

Можно сказать, что для каких-то тестов система уже готова.

Тесты производительности адекватные я не делал, так как не мой все-таки профиль. Может, кто заинтересуется и сделает. Для себя могу сказать, что отличий внешних от Oracleмало. Даже их новый язык PSM выглядит так:

CREATE [OR REPLACE] PACKAGE BODY book_manager IS     PROCEDURE add_new_book(v_author VARCHAR2, v_name VARCHAR2,                             publish_year DATE) IS     BEGIN         IF substr(v_name, 1, 1) >= 'a' AND             substr(v_name, 1, 1) < 'k' THEN             INSERT INTO books                  VALUES (1, v_author, v_name, publish_year);         ELSE             INSERT INTO books                  VALUES (2, v_author, v_name, publish_year);         END IF;         COMMIT;         book_cnt := book_cnt + 1;     END;      PROCEDURE remove_lost_book(v_author VARCHAR2, v_name VARCHAR2) IS     BEGIN         DELETE FROM books WHERE author = v_author AND name = v_name;         COMMIT;     END;      FUNCTION search_book_position(v_author VARCHAR2, v_name VARCHAR2)      RETURN NUMBER IS         book_position NUMBER;     BEGIN         SELECT kind INTO book_position FROM books              WHERE author = v_author AND name = v_name;         RETURN book_position;     EXCEPTION         WHEN NO_DATA_FOUND THEN             DBMS_OUTPUT.PUT_LINE('NOT EXIST...SORRY');             RAISE;     END;      FUNCTION get_total_book_cnt RETURN NUMBER IS     BEGIN         RETURN book_cnt;     END; BEGIN     book_cnt := 0; END;  

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

Всем спасибо, удачи и пока!

ссылка на оригинал статьи http://habrahabr.ru/post/269509/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *