hierarchyid CLR โอเพ่นซอร์สหรือไม่


9

ลำดับชั้นในตัวคือ CLR ที่เก็บพา ธ ในรูปแบบไบนารีที่มีประสิทธิภาพและมีฟังก์ชันการทำงานที่มีประโยชน์อื่น ๆ

โชคไม่ดีที่มีขีด จำกัด ว่าเส้นทางที่นำเสนอจะมีความลึกเพียงใดและเป็น ~ 1427 สำหรับต้นไม้ไบนารี ฉันต้องการเพิ่มขีด จำกัด นั้นสำหรับแอปพลิเคชันที่มีอยู่ที่ซับซ้อนซึ่งผูกพันกับขีด จำกัด นี้ ฉันไม่ต้องการเปลี่ยนอินเทอร์เฟซของประเภท ฉันไม่มั่นใจว่าฉันสามารถดึงการเปลี่ยนอินเทอร์เฟซของประเภทนั้นได้โดยไม่ต้องแนะนำข้อบกพร่องเล็กน้อยให้กับโค้ดทั้งหมดที่จะต้องเปลี่ยนตามผล

ฉันสามารถ (ในทางทฤษฎี) สร้าง "binhierarchyid" CLR UDT ที่ใช้อินเทอร์เฟซเดียวกับ hierarchyid แต่รองรับเฉพาะต้นไม้ไบนารี ที่ควรได้รับความลึกของฉัน ~ 7000 ในขณะที่ยังคงอยู่ภายในวงเงิน 900 ไบต์ ไม่แน่ใจว่ากิจการขนาดใหญ่จะเป็นเช่นไร

มีแหล่งที่มาของลำดับชั้นนี้ CLR อยู่ที่ใดที่หนึ่งหรือไม่เพื่อที่ฉันจะสามารถสร้างของตัวเองโดยใช้โครงสร้างที่รองรับโครงสร้างที่ลึกกว่าได้


ฉันสนใจที่จะรู้ว่าคุณกำลังสร้างโมเดลอะไร คุณอธิบายได้ไหม
wBob

คำตอบ:


6

มีซอร์สโค้ด. NET จำนวนมากพร้อมใช้งานและส่วนใหญ่เป็นโอเพ่นซอร์สแม้ว่าจะอยู่ภายใต้ไลเซนส์ต่างๆ ยังมีรหัสอื่นให้ใช้ แต่มีวัตถุประสงค์เพื่อการอ้างอิงเท่านั้นและไม่สามารถใช้ในรหัสของคุณได้

ระบุว่าเป้าหมายที่ระบุไว้คือ:

ฉันต้องการเพิ่มขีด จำกัด นั้นสำหรับแอปพลิเคชันที่มีอยู่ที่ซับซ้อนซึ่งผูกพันกับขีด จำกัด นี้ ฉันไม่ต้องการเปลี่ยนอินเทอร์เฟซของประเภท ฉันไม่มั่นใจว่าฉันสามารถดึงการเปลี่ยนอินเทอร์เฟซของประเภทนั้นได้โดยไม่ต้องแนะนำข้อบกพร่องเล็กน้อยให้กับโค้ดทั้งหมดที่จะต้องเปลี่ยนตามผล

หากเจตนาคือการปรับปรุงประเภทลำดับชั้นปัจจุบันว่ารหัสนั้นเป็นโอเพ่นซอร์สนั้นไม่เกี่ยวข้องหรือไม่เพราะถึงแม้ว่าคุณจะไม่สามารถแนะนำการเปลี่ยนแปลงใด ๆ ในระบบโดยรวม: แม้ว่าคุณจะสามารถแทนที่การชุมนุมใน SQL Server, คุณจะไม่สามารถเซ็นชื่อด้วย Certificate / Private Key เดียวกันและด้วยเหตุนี้ระบบจะไม่ถูกใช้งาน

อย่างไรก็ตามคุณสามารถสร้าง SQLCLR User-Defined Type (UDT) ของคุณเองเพื่อมอบการทำงานที่ต้องการ

ยังคงเป็นมันเกี่ยวข้องกับการได้รับความเข้าใจที่ดีขึ้นของ. NET Framework:

คุณสามารถดูซอร์สโค้ดของเนื้อหาส่วนใหญ่ได้ที่นี่: https://github.com/Microsoft/referencesource

และสิ่งอื่น ๆ อีกมากมายที่นี่: https://github.com/dotnet/corefx

ที่เก็บข้อมูลทั้งสองที่ระบุไว้ข้างต้นเป็นโอเพ่นซอร์สและควบคุมโดยส่วนใหญ่อยู่ภายใต้ใบอนุญาต MIT แม้ว่าคุณจะต้องตรวจสอบข้อมูลสิทธิ์การใช้งานในแต่ละตำแหน่งและบางครั้งในโฟลเดอร์ต่างๆ

รหัสที่เหลือจำนวนมากสามารถพบได้ที่นี่: http://referencesource.microsoft.com/

รหัสที่อ้างอิงที่ ReferenceSource.Microsoft.com (ลิงค์ด้านบนโดยตรง) ที่ไม่พบในสองลิงค์แรก (ซึ่งเป็น Open Source) ไม่ใช่ Open Source และถูกควบคุมโดยMICROSOFT REFERENCE SOURCE LICENSE (MS-RSL)ส่วนที่เกี่ยวข้องเป็น (แก้ไขเบา ๆ เพื่อใส่คำจำกัดความของ "การใช้การอ้างอิง" เพียงทำตามการใช้วลีนั้น):

ผู้อนุญาตให้สิทธิ์การใช้งานลิขสิทธิ์ที่ไม่สามารถถ่ายโอนไม่ผูกขาดและไม่ผูกขาดทั่วโลกในการทำซ้ำซอฟต์แวร์สำหรับการอ้างอิง: การใช้ซอฟต์แวร์ภายใน บริษัท ของคุณเป็นการอ้างอิงในรูปแบบอ่านอย่างเดียวเพื่อจุดประสงค์ในการดีบักเพียงอย่างเดียว ผลิตภัณฑ์ของคุณการบำรุงรักษาผลิตภัณฑ์ของคุณหรือเพิ่มความสามารถในการทำงานร่วมกันของผลิตภัณฑ์ของคุณด้วยซอฟต์แวร์และไม่รวมถึงสิทธิ์ในการเผยแพร่ซอฟต์แวร์ภายนอก บริษัท ของคุณ

อย่างไรก็ตามปรากฏว่าMicrosoft.SqlServer.*เนมสเปซไม่สามารถใช้ได้ในสถานที่เหล่านั้น ซึ่งหมายความว่าคำตอบง่ายๆสำหรับคำถามของ: "คือ HierarchyID โอเพ่นซอร์ส" คือไม่มี

หากความต้องการคือการดูรหัสที่มาแล้วคุณจะต้องเปิด DLL - Microsoft.SqlServer.Types.dll - ด้วย decompiler แต่มีประเด็นทางกฎหมายและ / หรือจริยธรรมที่อาจเกิดขึ้นในการจัดการกับ นี่คือรหัสที่เป็นกรรมสิทธิ์ดังนั้นจึงมีสองประเด็นหลักที่ควรพิจารณา:

  • ตามที่ระบุไว้ใน SQL Server ข้อตกลงใบอนุญาตผู้ใช้ปลายทาง (EULA) (และที่ยกมาใน @ TomV ของคำตอบ ) คุณสามารถเท่านั้น " วิศวกรรมย้อนกลับหรือแยกชิ้นส่วน " รหัสที่ไม่ให้ " เพียงในขอบเขตที่กฎหมายที่ใช้บังคับชัดอนุญาต " . หมายความว่าสำหรับบางคนมันถูกต้องตามกฎหมายที่จะทำสิ่งนี้ แต่สำหรับคนอื่นไม่มากนัก ดังนั้นคุณอาจต้องการปรึกษาทนายความด้านทรัพย์สินทางปัญญาในพื้นที่

  • ถ้ามันถูกกฎหมายสำหรับคุณในการถอดรหัสความตั้งใจของภาษาทางกฎหมายรวมถึงความจริงที่ว่ามีการให้ซอร์สโค้ดบางตัว (ตามที่เชื่อมโยงที่ด้านบน) แต่โค้ดเฉพาะนี้ไม่ได้แสดงถึงความปรารถนาที่มีต่อประชาชนทั่วไป ไม่เห็นหรือมีรหัสนี้ ดังนั้นการถูกกฏหมายในการถอดรหัสนั้นไม่ควรถูกนำมาใช้เพราะมันถูกกฎหมายในการทำสำเนา แต่ก็มีมากขึ้นเพื่อที่จะสามารถใช้เป็นข้อมูลอ้างอิงได้ (เช่นสำหรับการดีบักเป็นต้น)


4
ฉันไม่ได้คิดถึงแง่มุมทางกฎหมายเมื่อเขียนคำถาม ฉันคิดว่าวิธีที่ถูกกฎหมายเพียงอย่างเดียวคือการใช้ห้องสะอาด
Tarnay Kálmán

3
สวัสดีโซโลมอนฉันแค่สงสัยว่าคุณจะรู้สึกอย่างไรถ้าเราแนะนำให้แยกห้องสมุด (ดีมาก) ของคุณอย่างใดอย่างหนึ่งได้ดูวิธีการทำงานหรือคัดลอกรหัสที่มาของพวกเขา :)
ทอม V - ลอง topanswers.xyz

1
การตอบกลับการแก้ไขของคุณเกี่ยวกับความเป็นไปไม่ได้ในการเปลี่ยนชุดประกอบ: ฉันไม่ต้องการแทนที่ชุดประกอบ ฉันโอเคกับประเภทที่มีชื่ออื่น ฉันยังไม่เห็นความยากลำบากในการย้ายไปยังประเภทที่มีชื่อแตกต่างกันว่า (สำหรับกรณีการใช้ต้นไม้ไบนารี จำกัด ของฉัน) มีพฤติกรรมเดียวกัน ฉันจะต้องเปลี่ยนการอ้างอิงทั้งหมดเป็นประเภทในโพรซีเดอร์ที่เก็บไว้ (แต่จัดการได้) และแก้ไข (อาจจะสร้าง // อัปเดต / ลดลง) บางคอลัมน์ แต่ก็เกี่ยวกับมัน
Tarnay Kálmán

1
@TomV เป็นจุดที่ดีที่จะยกระดับขอบคุณมากสำหรับการทำเช่นนั้น ฉันกลับไปกลับมาในเรื่องนี้ทั้งสองด้านและเป็นคนที่อยากรู้อยากเห็นตามธรรมชาติ มีเหตุผลที่แตกต่างกันสำหรับการต้องการรหัส (การดีบักเรียนรู้เทคนิคคัดลอก / ขโมย ฯลฯ ) บางคนก็โอเค ผู้คนถามว่าจะถอดรหัส SQL # อย่างไรและแม้จะรู้ว่ามันถูกกฎหมายและพึ่งพานวัตกรรมมากกว่าความลับฉันจำได้ว่าไม่เห็นคุณค่า ฉันเดาว่าฉันกำลังตอบอย่างเร่งรีบโดยมุ่งเน้นที่ "วิธีการ" แต่ได้อัปเดตคำตอบของฉันแทนที่คำแนะนำด้วยแง่มุมต่าง ๆ ของสถานการณ์
โซโลมอน Rutzky

6

เนื่องจาก srutzky ชี้ให้คุณเห็นสถานที่ตั้งบางแห่งในคำตอบของเขาที่มีซอร์สโค้ดของ Microsoft บางส่วนและฟังก์ชั่นที่คุณขอไม่มีอยู่ในรายการฉันคิดว่าเราสามารถสรุปได้ว่าซอร์สโค้ดไม่มีอยู่ภายใต้ใบอนุญาตโอเพนซอร์สใด ๆ คำถามของคุณเกี่ยวกับการเป็นโอเพ่นซอร์สไม่ใช่ว่าจะสามารถดูซอร์สโค้ดได้

ระบุว่าEULAระบุสิ่งต่อไปนี้:

ในการทำเช่นนั้นคุณต้องปฏิบัติตามข้อ จำกัด ทางเทคนิคใด ๆ ในซอฟต์แวร์ที่อนุญาตให้คุณใช้งานได้ในบางวิธีเท่านั้น คุณต้องไม่:
...
ทำวิศวกรรมย้อนกลับแยกส่วนหรือแยกส่วนประกอบซอฟต์แวร์ยกเว้นและเท่าที่กฎหมายที่ใช้บังคับอนุญาตไว้โดยชัดแจ้งแม้จะมีข้อ จำกัด นี้

ดังนั้นฉันจึงกลัวว่าคุณจะถูกปล่อยให้ทำตามตรรกะตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.