The title of this article is somewhat misleading. 

As the first line states, it doesn't, then tells you how to do it without mirroring.

Which is all well and good, and correct information as best I understand it, although option one does introduce a single point of failure should the NAS be unavailable. But the title just doesn't match the content.

Disappointing really as I'd love mirroring to be able to sync non DB files, or just file as we normally call them, because it doesn't mirror database files either, it mirrors database content. 

I've been using Cache/IRIS for nearly 20 years, and I didn't notice when they snuck in the SELECT JSON_OBJECT() function. That's going to start getting a lot more use now I know it exists! 

Another really useful feature is the ability to access fields across relationships using the -> operator. This saves all the time and effort of writing join statements if table relationships are in place. 

Cheers

It's a great exam. I'm not just saying that because I helped develop it, but it has some great questions and topics on it that really make you think. 
I can't say I enjoyed the process of taking my last Intersystems exam, (not this one), but I certainly enjoyed the feeling after I passed it. :)
It's great to get that validation that you do actually know what you're talking about! 

So if points aren't as valuable as a live human discussion, where in the scale of things do AI discussions fit with points?  I assume AI conversation is better than points, but not as good as humans? 
For that matter, are there other kinds of human discussions, unalive humans? 

Getting a little back on topic, I need to see how I can go about training an in house model to access my data. I'd be interested to see if I can use it to provide customers with insights into their accounts with a company without having to write specific reports etc. 
I'm guessing a customer portal / chat bot would be the solution I'm thinking about, and I'm guessing that would fall under some form of RAG, but I haven't the faintest clue what elements would be required to make that happen. 

I have been working on this recently and tried the links in this and other questions, but in the end settled for using Chrome.  It was easier, quicker and less moving parts as Chrome was already on the servers. 

/// "C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --print-to-pdf="E:\Data\Spooler\2022-07\DN560241_14a.pdf" "E:\Data\Spooler\2022-07\DN560241_14.htm"

strExePath=..getChrome()  // This function just handles the fact some machines put chrome in program files, others in program files (x86)
s1=$ZF(-100,"/LOGCMD /NOQUOTE /STDOUT+=e:\logs\H2POUT.log /STDERR+=e:\logs\H2Perr.log",strExePath,"--headless --disable-gpu --print-to-pdf-no-header --print-to-pdf="""_strPDFPath_""" """_strHTMLPath_"""") // For some weird reason this flags as an error when it completes, no idea why, but its not valid.
//w "S1: "_s1,!!
//I $$$ISERR(s1) Q $SYSTEM.Status.GetErrorText(s1)
##class(%File).Exists(strPDFPath)
"1*"_strPDFPath 
ELSE 
"0*Error Occurred" }


 

Thanks Timo

The codebase of this system is over 30 years old. They came up with suffixing as their solution and its used in a lot of places. As much as I can see prefixing as a better solution overall, there is no way to make that happen. So I'm stuck battling with what I've got. I've a few ideas now on where / how to approach a new search function for this class of data set, but no shining silver bullet. 

Hi David 

You're right, there are no numeric values in the global, all values are suffixed with a space. The issue occurs when the actual value of the search string is numeric, (i.e. the prefix you're searching for has no alpha characters in, regardless of the state of the matching value in the global).

The code I had worked fine for any non numeric search strings but not with fully numeric ones. The logical solution would seem to be to add the space onto the search string to convert it to a string and then run the search, however that doesn't return the data expected. 

I think I need to take all the suggestions above and go away and play with another version of the search function, possibly combining a numeric and string search function to get the complete matching data set. 

Thanks for the suggestions. 

Thanks Robert

I still don't see how that addresses my question, but I understand what you're suggesting now. 
You're giving it the last value of the search, and you're also still looping through the entire global.  The first I don't have unless I calculate it and the second is what I'm trying to avoid.

I think my solution may lie in forcing the numeric search prefix into a string and going from there.  I'll have to go back and play. As is the oft the case, writing it all down to explain it has clarified a few things for me :)


Thanks Robert. 

I understand that the value is being treated as numeric.  I couldn't get my head around how "8009 " matches "800999 " because the space should invalidate the match, but I've just realised that that space is a lower ascii value than the numerics and alpha characters. 

I don't understand your suggestion about using $QSUBSCRIPT, could you possibly provide a line of code to show how you're suggesting it would give me a range end. 

I'm loving the examples, however I'm a little confused by the last running total.  Either I'm misunderstanding what it's trying to do or its not doing what I think it should.

The ACC_EXPENSES column seems to be only taking the first value for a given date and adding it into the running total instead of all the values for a given date. In the below image the date 1/1/23 has 3 rows, 300, 230 & 330, which total 860 as seen in the TOTAL_EXPENSES column. 

The ACC_EXPENSES value for 1/2/23 should be the sum of 1/1/23, (860) and the sum of 1/2/23, (880), but instead its showing 730, which is the sum of the 2 rows I've highlighted above. 

Hi 

I know those are available, but I need to be able to access the data within those routines within objectscript.  I want to be able to pull out the current status of each member of a mirror set from one member of that mirror set. From those docs, this is the data I want access to, but in a way I can access, check and report upon via scheduled scripts/reports so that if a mirror member goes offline I can pick it up from the primary say and email out a notification.  If there is a way to do that with those utilities I can't see them from the documentation. 

Member Name+Type            Status     Journal Transfer  Dejournaling
--------------------------  ---------  ----------------  --------------
MIR25FEB_A
     Failover               Primary    N/A               N/A
MIR25FEB_B
     Failover               Backup     Active            Caught up
MIR25FEB_C
     Disaster Recovery      Connected  Caught up         Caught up
MIR25FEB_D
     Read-Only Reporting    Connected  Caught up         Caught up