3. ÐÑаÑÐºÐ°Ñ Ð¸ÑÑоÑÐ¸Ñ PostgreSQL
ÐбÑекÑно-ÑелÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ даннÑÑ , именÑÐµÐ¼Ð°Ñ ÑÐµÐ³Ð¾Ð´Ð½Ñ PostgreSQL, пÑоизоÑла Ð¾Ñ Ð¿Ð°ÐºÐµÑа POSTGRES, напиÑанного в ÐеÑкли, ÐалиÑоÑнийÑком ÑнивеÑÑиÑеÑе. ÐоÑле деÑÑÑилеÑий ÑазÑабоÑки PostgreSQL ÑÑал Ñамой ÑазвиÑой СУÐÐ Ñ Ð¾ÑкÑÑÑÑм иÑÑ Ð¾Ð´Ð½Ñм кодом.
3.1. ÐÑÐ¾ÐµÐºÑ POSTGRES в ÐеÑкли
ÐÑÐ¾ÐµÐºÑ POSTGRES, возглавлÑемÑй пÑоÑеÑÑоÑом Ðайклом СÑоÑнбÑейкеÑом, ÑпонÑиÑовали агенÑÑÑво DARPA пÑи ÐинобоÑÐ¾Ð½Ñ Ð¡Ð¨Ð, УпÑавление военнÑÑ Ð¸ÑÑледований (ARO), ÐаÑионалÑнÑй ÐаÑÑнÑй Фонд (NSF) и ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ ESL, Inc. РеализаÑÐ¸Ñ POSTGRES наÑалаÑÑ Ð² 1986 г. ÐеÑвонаÑалÑнÑе конÑепÑии ÑиÑÑÐµÐ¼Ñ Ð±Ñли пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² докÑменÑе [ston86], а опиÑание пеÑвой модели даннÑÑ Ð¿Ð¾ÑвилоÑÑ Ð² [rowe87]. ÐÑÐ¾ÐµÐºÑ ÑиÑÑÐµÐ¼Ñ Ð¿Ñавил Ñогда бÑл пÑедÑÑавлен в [ston87a]. СÑÑÑ Ð¸ аÑÑ Ð¸ÑекÑÑÑа менеджеÑа Ñ ÑанилиÑа бÑли ÑаÑпиÑÐ°Ð½Ñ Ð² [ston87b].
С ÑÐµÑ Ð¿Ð¾Ñ POSTGRES пÑоÑÑл неÑколÑко ÑÑапов ÑазвиÑиÑ. ÐеÑÐ²Ð°Ñ Â«Ð´ÐµÐ¼Ð¾Ð²ÐµÑÑиÑ» заÑабоÑала в 1987 и бÑла показана в 1988 на конÑеÑенÑии ACM-SIGMOD. ÐеÑÑÐ¸Ñ 1, опиÑÐ°Ð½Ð½Ð°Ñ Ð² [ston90a], бÑла вÑпÑÑена Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ Ð²Ð½ÐµÑÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей в иÑне 1989. РоÑÐ²ÐµÑ Ð½Ð° кÑиÑÐ¸ÐºÑ Ð¿ÐµÑвой ÑиÑÑÐµÐ¼Ñ Ð¿Ñавил ([ston89]), она бÑла пеÑеделана ([ston90b]), и в веÑÑии 2, вÑпÑÑенной в иÑне 1990, бÑла Ñже Ð½Ð¾Ð²Ð°Ñ ÑиÑÑема пÑавил. Ð 1991 вÑÑла веÑÑÐ¸Ñ 3, в коÑоÑой поÑвилаÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑазлиÑнÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑов Ñ ÑанилиÑа, ÑлÑÑÑеннÑй иÑполниÑÐµÐ»Ñ Ð·Ð°Ð¿ÑоÑов и пеÑепиÑÐ°Ð½Ð½Ð°Ñ ÑиÑÑема пÑавил. ÐоÑледÑÑÑие вÑпÑÑки до Postgres95 (Ñм. ниже) в оÑновном бÑли напÑÐ°Ð²Ð»ÐµÐ½Ñ Ð½Ð° ÑлÑÑÑение поÑÑиÑÑемоÑÑи и надÑжноÑÑи.
POSTGRES пÑименÑлÑÑ Ð´Ð»Ñ ÑеализаÑии множеÑÑва иÑÑледоваÑелÑÑÐºÐ¸Ñ Ð¸ пÑоизводÑÑвеннÑÑ Ð·Ð°Ð´Ð°Ñ. Ð Ð¸Ñ ÑиÑле: ÑиÑÑема анализа ÑинанÑовÑÑ Ð´Ð°Ð½Ð½ÑÑ , Ð¿Ð°ÐºÐµÑ Ð¼Ð¾Ð½Ð¸ÑоÑинга ÑабоÑÑ ÑеакÑивнÑÑ Ð´Ð²Ð¸Ð³Ð°Ñелей, база даннÑÑ Ð½Ð°Ð±Ð»Ñдений за аÑÑеÑоидами, база даннÑÑ Ð¼ÐµÐ´Ð¸ÑинÑкой инÑоÑмаÑии, неÑколÑко геогÑаÑиÑеÑÐºÐ¸Ñ Ð¸Ð½ÑоÑмаÑионнÑÑ ÑиÑÑем. POSTGRES Ñакже иÑполÑзовалÑÑ Ð´Ð»Ñ Ð¾Ð±ÑÑÐµÐ½Ð¸Ñ Ð² неÑколÑÐºÐ¸Ñ ÑнивеÑÑиÑеÑÐ°Ñ . ÐаконеÑ, ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Illustra Information Technologies (позже ÑÑавÑÐ°Ñ ÑаÑÑÑÑ Informix, коÑоÑÐ°Ñ ÑейÑÐ°Ñ Ð¿ÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ IBM) воÑполÑзовалаÑÑ ÐºÐ¾Ð´Ð¾Ð¼ и наÑла ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¼ÐµÑÑеÑкое пÑименение. РконÑе 1992 POSTGRES ÑÑал оÑновной СУÐРнаÑÑного вÑÑиÑлиÑелÑного пÑоекÑа Sequoia 2000, опиÑанного в [ston92].
Ð 1993 ÑиÑло внеÑÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей ÑдвоилоÑÑ. СÑало оÑевидно, ÑÑо обÑлÑживание кода и поддеÑжка Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑлиÑком много вÑемени, и его не Ñ Ð²Ð°ÑÐ°ÐµÑ Ð½Ð° иÑÑледованиÑ. ÐÐ»Ñ ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ ÑÑой нагÑÑзки пÑÐ¾ÐµÐºÑ POSTGRES в ÐеÑкли бÑл оÑиÑиалÑно закÑÑÑ Ð½Ð° веÑÑии 4.2.
3.2. Postgres95
Ð 1994 ÐндÑи Ю и Ðжолли Чен добавили в POSTGRES инÑеÑпÑеÑаÑÐ¾Ñ ÑзÑка SQL. Уже Ñ Ð½Ð¾Ð²Ñм именем Postgres95 бÑл опÑбликован в ÐнÑеÑнеÑе и наÑал Ñвой пÑÑÑ ÐºÐ°Ðº поÑомок ÑазÑабоÑанного в ÐеÑкли POSTGRES, Ñ Ð¾ÑкÑÑÑÑм иÑÑ Ð¾Ð´Ð½Ñм кодом.
Ðод Postgres95 бÑл пÑиведÑн в полное ÑооÑвеÑÑÑвие Ñ ANSI C и ÑменÑÑилÑÑ Ð½Ð° 25%. ÐлагодаÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑÐ²Ñ Ð²Ð½ÑÑÑÐµÐ½Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ он ÑÑал бÑÑÑÑее и Ñдобнее. Postgres95 веÑÑии 1.0.x ÑабоÑал пÑимеÑно на 30â50% бÑÑÑÑее POSTGRES веÑÑии 4.2 (по ÑеÑÑам Wisconsin Benchmark). Ðомимо иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñибок, пÑоизоÑли ÑледÑÑÑие изменениÑ:
Ðа ÑÐ¼ÐµÐ½Ñ ÑзÑÐºÑ Ð·Ð°Ð¿ÑоÑов PostQUEL пÑиÑÑл SQL (ÑеализованнÑй в ÑеÑвеÑе). (ÐнÑеÑÑейÑÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека libpq ÑнаÑледовала ÑÐ²Ð¾Ñ Ð¸Ð¼Ñ Ð¾Ñ PostQUEL.) ÐодзапÑоÑÑ Ð½Ðµ поддеÑживалиÑÑ Ð´Ð¾ вÑÑ Ð¾Ð´Ð° PostgreSQL (Ñм. ниже), Ñ Ð¾ÑÑ Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло имиÑиÑоваÑÑ Ð² Postgres95 Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑÐºÐ¸Ñ ÑÑнкÑий SQL. ÐÑли заново ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð°Ð³ÑегаÑнÑе ÑÑнкÑии. Также поÑвилаÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка пÑедложениÑ
GROUP BY.ÐÐ»Ñ Ð¸Ð½ÑеÑакÑивнÑÑ SQL-запÑоÑов бÑла ÑазÑабоÑана Ð½Ð¾Ð²Ð°Ñ Ð¿ÑогÑамма (psql), коÑоÑÐ°Ñ Ð¸ÑполÑзовала GNU Readline. СÑаÑÐ°Ñ Ð¿ÑогÑамма monitor ÑÑала не нÑжна.
ÐоÑвилаÑÑ Ð½Ð¾Ð²Ð°Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека
libpgtclÐ´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки Tcl-клиенÑов. ÐÑÐ¸Ð¼ÐµÑ Ð¾Ð±Ð¾Ð»Ð¾Ñки,pgtclsh, пÑедÑÑавлÑл новÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Tcl Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿ÑогÑамм Tcl Ñ ÑеÑвеÑом Postgres95.ÐÑл ÑÑовеÑÑенÑÑвован инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð±Ð¾Ð»ÑÑими обÑекÑами. ÐдинÑÑвеннÑм Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð¼ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÐ°ÐºÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑали инвеÑÑионнÑе обÑекÑÑ. (ÐнвеÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема бÑла Ñдалена.)
Удалена ÑиÑÑема пÑавил на ÑÑовне ÑкземплÑÑов; пеÑезапиÑÑваÑÑие пÑавила ÑÐ¾Ñ ÑанилиÑÑ.
С иÑÑ Ð¾Ð´Ð½Ñм кодом ÑÑали ÑаÑпÑоÑÑÑанÑÑÑÑÑ ÐºÑаÑкие опиÑÐ°Ð½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей ÑÑандаÑÑного SQL, а Ñакже Ñамого Postgres95.
ÐÐ»Ñ ÑбоÑки иÑполÑзовалÑÑ GNU make (вмеÑÑо BSD make). ÐÑоме Ñого, ÑÑало возможно ÑкомпилиÑоваÑÑ Postgres95 Ñ Ð½ÐµÐ¼Ð¾Ð´Ð¸ÑиÑиÑованной веÑÑией GCC (бÑло иÑпÑавлено вÑÑавнивание даннÑÑ ).
3.3. PostgreSQL
Ð 1996 г. ÑÑало понÑÑно, ÑÑо Ð¸Ð¼Ñ Â«Postgres95» не вÑдеÑÐ¶Ð¸Ñ Ð¸ÑпÑÑание вÑеменем. ÐÑ Ð²ÑбÑали новое имÑ, PostgreSQL, оÑÑажаÑÑее ÑвÑÐ·Ñ Ð¼ÐµÐ¶Ð´Ñ Ð¾ÑигиналÑнÑм POSTGRES и более поздними веÑÑиÑми Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой SQL. Ð Ñо же вÑемÑ, Ð¼Ñ Ð¿Ñодолжили нÑмеÑаÑÐ¸Ñ Ð²ÐµÑÑий Ñ 6.0, веÑнÑвÑиÑÑ Ðº поÑледоваÑелÑноÑÑи, наÑаÑой в пÑоекÑе ÐеÑкли POSTGRES.
Postgres по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ ÑÑиÑаеÑÑÑ Ð¾ÑиÑиалÑнÑм именем пÑоекÑа не ÑолÑко по ÑÑадиÑии, но и поÑомÑ, ÑÑо Postgres пÑоизноÑиÑÑ Ð¿ÑоÑе, Ñем PostgreSQL.
РпÑоÑеÑÑе ÑазÑабоÑки Postgres95 оÑновнÑми задаÑами бÑли поиÑк и понимание ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð¿Ñоблем в ÑеÑвеÑном коде. С пеÑÐµÑ Ð¾Ð´Ð¾Ð¼ к PostgreSQL акÑенÑÑ ÑмеÑÑилиÑÑ Ðº ÑеализаÑии новÑÑ ÑÑнкÑий и возможноÑÑей, Ñ Ð¾ÑÑ ÑабоÑа пÑодолжаеÑÑÑ Ð²Ð¾ вÑÐµÑ Ð½Ð°Ð¿ÑавлениÑÑ .