230 likes | 422 Views
ارائه معماری برای پرسوجو در دادههای Xml. استاد راهنما: دکتر رهگذر تهیه کننده: مجید کلکتهچی پائیز ۸۷. مباحث مطروحه. انواع روشهای دسترسی به دادههای Xml روشهای دسترسی مستقیم xPath مزایا و معایب xQuery مزایا و معایب روش دسترسی به دادههای توزیع شده . مباحث مطروحه.
E N D
ارائه معماری برای پرسوجو در دادههای Xml استاد راهنما: دکتر رهگذر تهیه کننده: مجید کلکتهچی پائیز ۸۷
مباحث مطروحه • انواع روشهای دسترسی به دادههای Xml • روشهای دسترسی مستقیم • xPath • مزایا و معایب • xQuery • مزایا و معایب • روش دسترسی به دادههای توزیع شده
مباحث مطروحه • انواع روشهای دسترسی به دادههای Xml • روشهای دسترسی بهوسیله واسطهای برنامهنویسی • SAX • JAXB • معماری ارائه شده • شمای کلی معماری • مزایا و معایب معماری
انواع روشهای دسترسی به Xml • روشهای دسترسی مستقیم • استانداردهای کنسرسیوم وب جهانی برای Xml • Xpath • Xquery • xPointer • xLink • XSLT
Xpath • ساختار کلی دستورات در Xpath: • Step1/step2/…/stepn • ساختار هر گام به صورت زیر خواهد بود: • axis:: nodetest ([ predicate]) • استفاده از توابع موجود: doc(uri)، position()... • مزایای Xpath • معایب Xpath
Xpath • //country[@car code= ”B”]/population • تست نود به همراه عنصر پاشنه گردی child /child::mondial/child::country/child::province/child::city/child::name/text() • Predicateها: //country//city[population>10000000]
xQuery • دستورات Xpath و Xquery • ساختار FlWOR برای دستورات Xquery • نمونهای کلی از یک دستور در Xquery: for $var1 in expr1, $var2 in expr2, . . . , $varn in exprn let $var’1 := expr’1, $var’2 := expr’2, . . . , $var’m := expr’m where conditions order by order by expr return result
xQuery • for $country in doc(”http://. . . mondial.xml”)//countrylet $capital := id($country/@capital)where $capital/population > 1000000order by $country/namereturn<result>{$country/name}</result> • every $country in //country satisfies $country/@area
xQuery • توابع تعریفی کاربر در Xquery: declare function local:depth($e as node()) as xs:integer { if (empty($e/*)) then 1 else max(for $c in $e/* return local:depth($c)) + 1 };
روش دسترسی به دادههای توزیعشده • استفاده از xLink برای توزیع داده • مراحل بازیابی دادههای توزیع شده: • استفاده از doc(uri) برای Xpath • استفاده از توابع تعریف شده توسط کاربر برای xPointer • مراحل فوق به صورت بازگشتی در درخت دادهها
مزایا و معایب استفاده از Xquery • مزایا • سرعت اجرای پرسوجو • قابلیت بالا بردن کارایی انجام پرسوجو • کامل بودن زبان پرسوجو از لحاظ محاسباتی • معایب • همخوانی نداشتن با روشهای برنامهنویسی شیگرا • همزمانی و تراکنش برای تغییر اطلاعات
روشهای دسترسی غیر مستقیم • دسترسی از طریق واسطهای برنامهنویسی • متفاوت در زبانهای مختلف • SAX • JAXB
SAX • واسط برنامهنویسی ساده برای کار با Xml • مدل کاری برمبنای پرتاب رویداد • انواع رویدادها( شروع تگ، انتهای تگ و ...) • پیادهسازی و ثبتنام کلاسهایی برای بررسی دادههای Xml در زمان رخداد یک رویداد • در زمان پرتاب هر رویداد، متدی خاص از کلاس فراخوانی شده و پارامترهای رویداد به آن فرستاده میشوند
مزایا و معایب SAX • مزایا • سادگی واسط برنامهنویسی • سرعت مناسب آن در بررسی دادهها • معایب • پیچیدگی برنامههای ثبتنام شده برای رویدادها • وابستگی غیرضروری و ناشناخته درون متدهای ثبتنام شده برای رویدادها
JAXB • همانند تبدیل دادههای مدل رابطهای به شیءگرا • مراحل: • اتصال شما به کلاسها • تبدیل دادهها به اشیاء • روش تبدیل ساختار درختی به کلاسها • به ازای هر تگ مستقل: یک کلاس • به ازای خصوصیات هر تگ: متغیرهایی در کلاس • به ازای تگهای فرزند: متغیرهایی از جنس کلاس آن تگها • دسترسی به دادههای Xml از طریق یک کلاس نگاشتدهنده: قابل ساخت با استفاده از الگوی فکتوری
JAXB • مثالی ساده(کلاسهای معادل xml): public class Shiporder { protected List<Shiporder.Item> item; public List<Shiporder.Item> getItem() { if (item == null) { item = new ArrayList<Shiporder.Item>(); } return this.item; }... {
JAXB • نمونهای از استفاده: javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(Shiporder.class.getPackage().getName()); javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller(); marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); if (!file.exists()) { shipOrder = new Shiporder(); shipOrder.setOrderid("1020"); shipOrder.setOrderperson("Farzad Ghanei");
JAXB • ادامه: Shipto shipto = new Shipto(); shipto.setAddress("nia"); shipto.setCity("Tehran"); shipto.setCountry("Iran"); shipto.setName("Farzad Ghanei"); shipOrder.setShipto(shipto); marshaller.marshal(shipOrder,file); …..
مزایا و معایب روش JAXB • مزایا: • همخوانی زبان برنامهنویسی و مدل داده • مکانیزمهای همزمانی و تراکنش • بررسی صحت دادهها در بروزرسانی • اعمال سادهتر تغییرات • معایب: • کند بودن زمان اجرا • وابستگی به XSDو انواع دیگر scheme
معماری ارائه شده برای لایه داده • ارتباط لایه داده با لایه منطق تجاری • ارتباط لایه داده با دیتابیس سیستم • تقسیمبندی عملیات به خواندن و نوشتن • انجام عملیات خواندن با استفاده از روشهای مستقیم • انجام عملیات بروزرسانی با استفاده از روش JAXB
Business Lauyer(not Complete) DAO Implementation JAXB Interface XML Databases Documents & شمای معماری مطرح شده
مزایا و معایب معماری فوق • مزایا • خواندن سریع اطلاعات برای نمایش • استفاده از قابلیتهای کنترل همزمانی و تراکنشهای سطح برنامه • در صورت تغییر شمای Xml نبود نیاز برای تغییر بروزرسانیها • معایب • درصورت تغییر شمای Xml، تغییر در پرسوجوهای خواندن • دوتکه بودن خواندن و نوشتن و نبود روش یکپارچه
منابع • W.May, E.Behrends and O.Fritzen, Integrating and querying distributed XML data via XLink, Information System 33(2008), pp. 508-566 • http://www.w3.org/TR/xquery/ • http://www.w3.org/TR/1999/REC-xpath-19991116 • http://java.sun.com/developer/technicalArticles/WebServices/jaxb • http://www.w3schools.com/XPath/default.asp • http://www.w3schools.com/xpath/xpath_axes.asp • http://www.w3.org/TR/xquery-operator • http://www.w3schools.com/Schema/schema_example.asp